<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>200319</bug_id>
          
          <creation_ts>2019-07-31 14:45:36 -0700</creation_ts>
          <short_desc>Crash under RuleSet::hasShadowPseudoElementRules() during class change style invalidation</short_desc>
          <delta_ts>2019-08-22 11:03:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>200919</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1557385</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-31 14:45:36 -0700</bug_when>
    <thetext>Crash under RuleSet::hasShadowPseudoElementRules():
Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000070
Exception Note:        EXC_CORPSE_NOTIFY

Termination Signal:    Segmentation fault: 11
Termination Reason:    Namespace SIGNAL, Code 0xb
Terminating Process:   exc handler [73259]

VM Regions Near 0x70:
--&gt; 
    __TEXT                 00000001089e3000-00000001089e4000 [    4K] r-x/rwx SM=COW  /Applications/Safari Technology Preview.app/Contents/Frameworks/WebKit.framework/Versions/A/XPCServices/com.apple.WebKit.WebContent.xpc/Contents/MacOS/com.apple.WebKit.WebContent

Application Specific Information:
Bundle controller class:
BrowserBundleController
 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x0000000568eb6cb6 WebCore::RuleSet::hasShadowPseudoElementRules() const + 6
1   com.apple.WebCore             	0x000000056979fa3d WebCore::Style::ClassChangeInvalidation::invalidateStyleWithRuleSets() + 77
2   com.apple.WebCore             	0x000000056806a511 WebCore::Element::classAttributeChanged(WTF::AtomicString const&amp;) + 337
3   com.apple.WebCore             	0x0000000568fb7ead WebCore::Element::attributeChanged(WebCore::QualifiedName const&amp;, WTF::AtomicString const&amp;, WTF::AtomicString const&amp;, WebCore::Element::AttributeModificationReason) + 301
4   com.apple.WebCore             	0x000000056809050e WebCore::Element::setAttributeInternal(unsigned int, WebCore::QualifiedName const&amp;, WTF::AtomicString const&amp;, WebCore::Element::SynchronizationOfLazyAttribute) + 622
5   com.apple.WebCore             	0x00000005690d7d0d WebCore::DOMTokenList::updateAssociatedAttributeFromTokens() + 349
6   com.apple.WebCore             	0x00000005690d76ab WebCore::DOMTokenList::addInternal(WTF::String const*, unsigned long) + 443
7   com.apple.WebCore             	0x00000005690d74d7 WebCore::DOMTokenList::add(WTF::Vector&lt;WTF::String, 0ul, WTF::CrashOnOverflow, 16ul&gt; const&amp;) + 23
8   com.apple.WebCore             	0x000000056811315b WebCore::jsDOMTokenListPrototypeFunctionAdd(JSC::ExecState*) + 251
9   ???                           	0x0000286b9620116b 0 + 44442545295723
10  ???                           	0x0000286b96945e19 0 + 44442552917529
11  ???                           	0x0000286b969dbf78 0 + 44442553532280
12  ???                           	0x0000286b96731b0f 0 + 44442550737679
13  com.apple.JavaScriptCore      	0x000000056b94f9e5 llint_entry + 92972
14  ???                           	0x0000286b969bf8a2 0 + 44442553415842
15  ???                           	0x0000286b969cb701 0 + 44442553464577
16  ???                           	0x0000286b967a17df 0 + 44442551195615
17  com.apple.JavaScriptCore      	0x000000056b938d0f vmEntryToJavaScript + 200
18  com.apple.JavaScriptCore      	0x000000056b5a1bcf JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) + 415
19  com.apple.JavaScriptCore      	0x000000056c0e212b JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 187
20  com.apple.WebCore             	0x0000000568d55e94 WebCore::JSExecState::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 100
21  com.apple.WebCore             	0x0000000568d55de0 WebCore::JSCallbackData::invokeCallback(WebCore::JSDOMGlobalObject&amp;, JSC::JSObject*, JSC::JSValue, JSC::MarkedArgumentBuffer&amp;, WebCore::JSCallbackData::CallbackType, JSC::PropertyName, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 368
22  com.apple.WebCore             	0x00000005681b46f3 WebCore::JSRequestAnimationFrameCallback::handleEvent(double) + 467
23  com.apple.WebCore             	0x0000000569005a8b WebCore::ScriptedAnimationController::serviceRequestAnimationFrameCallbacks(double) + 539
24  com.apple.WebCore             	0x00000005693b6a89 WebCore::Page::updateRendering() + 281
25  com.apple.WebKit              	0x0000000108d9ffd7 WebKit::TiledCoreAnimationDrawingArea::flushLayers(WebKit::TiledCoreAnimationDrawingArea::FlushType) + 63
26  com.apple.CoreFoundation      	0x00007fff50216928 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557387</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-31 14:45:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/53413013&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557403</commentid>
    <comment_count>2</comment_count>
      <attachid>375256</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-31 15:02:13 -0700</bug_when>
    <thetext>Created attachment 375256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557405</commentid>
    <comment_count>3</comment_count>
      <attachid>375256</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-07-31 15:04:14 -0700</bug_when>
    <thetext>Comment on attachment 375256
Patch

Hm... I think this code is pretty perf sensitive. An extra heap allocation for each InvalidationRuleSet could be expensive?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557408</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-31 15:11:57 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; Comment on attachment 375256 [details]
&gt; Patch
&gt; 
&gt; Hm... I think this code is pretty perf sensitive. An extra heap allocation
&gt; for each InvalidationRuleSet could be expensive?

This is a risk, yes.

One alternative would be to update m_invalidationRuleSets to be a Vector&lt;std::pair&lt;RuleSet*, MatchElement&gt;&gt; instead of a Vector&lt;InvalidationRuleSet*&gt;.

or a struct { RuleSet* ruleSet; MatchElement matchElement; }; instead of a std::pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1557413</commentid>
    <comment_count>5</comment_count>
      <attachid>375256</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-07-31 15:22:29 -0700</bug_when>
    <thetext>Comment on attachment 375256
Patch

I think my theory is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564128</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-22 11:03:03 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 200919 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>375256</attachid>
            <date>2019-07-31 15:02:13 -0700</date>
            <delta_ts>2019-07-31 15:22:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200319-20190731150212.patch</filename>
            <type>text/plain</type>
            <size>10886</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ4MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlNzFjNTYzMzM0ODg0
YTBiZDIxOGE5MjI0YzY5NmVhMDNjY2E0MC4uMmMzNjU1NmU5ODhjZDg2MmNmMTkyZWRjMzU0NWFl
NDdjNDM4ZmU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE5LTA3LTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ3Jhc2ggdW5kZXIgUnVsZVNl
dDo6aGFzU2hhZG93UHNldWRvRWxlbWVudFJ1bGVzKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDMxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTM0MTMwMTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSXQgYXBwZWFycyB0aGF0IGludmFsaWRhdGlvblJ1bGVTZXQtPnJ1bGVTZXQgaXMgbnVsbCBp
bnNpZGUgQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmludmFsaWRhdGVTdHlsZVdpdGhSdWxlU2V0
cygpLgorICAgICAgICBUaGlzIGlzIG5vdCBwb3NzaWJsZSBzbyBJIHRoaW5rIHRoYXQgb3VyIGlu
dmFsaWRhdGlvblJ1bGVTZXQgcG9pbnRlciBpcyBnYXJiYWdlLiBUaGUgaW52YWxpZGF0aW9uUnVs
ZVNldCBwb2ludGVyCisgICAgICAgIGlzIGNvbWluZyBmcm9tIENsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uOjptX2ludmFsaWRhdGlvblJ1bGVTZXRzIGRhdGEgbWVtYmVyLCB3aGljaCBpcyBpbml0aWFs
aXplZCBpbgorICAgICAgICBDbGFzc0NoYW5nZUludmFsaWRhdGlvbjo6Y29tcHV0ZUludmFsaWRh
dGlvbigpLiBtX2ludmFsaWRhdGlvblJ1bGVTZXRzIGFjdHVhbGx5IGNvbnRhaW5zIHBvaW50ZXJz
IHRvIGVudHJpZXMgb2YKKyAgICAgICAgdGhlIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiBy
ZXR1cm5lZCBieSBEb2N1bWVudFJ1bGVTZXRzOjpjbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKCkg
YW5kIHRoZSBWZWN0b3IgaW4gcXVlc3Rpb24KKyAgICAgICAgaXMgc3RvcmVkIGluc2lkZSB0aGUg
RG9jdW1lbnRSdWxlU2V0czo6bV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzIEhhc2hNYXAuCisK
KyAgICAgICAgTXkgc3BlY3VsYXRpb24gaXMgdGhhdCBhcyBBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb246OmludmFsaWRhdGVTdHlsZSgpIGl0ZXJhdGVzIG92ZXIgbV9pbnZhbGlkYXRpb25SdWxl
U2V0cywKKyAgICAgICAgc29tZXRoaW5nIG1vZGlmaWVzIHRoZSBEb2N1bWVudFJ1bGVTZXRzOjpt
X2NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMgSGFzaE1hcCBhbmQgaXQgZW5kcyB1cCBpbnZhbGlk
YXRpbmcgdGhlCisgICAgICAgIHBvaW50ZXJzIGluc2lkZSBtX2ludmFsaWRhdGlvblJ1bGVTZXRz
IHdoZW4gdGhlIEhhc2hNYXAgZ2V0cyByZWhhc2hlZC4gVG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBt
eSBzcGVjdWxhdGl2ZQorICAgICAgICBmaXggaXMgdG8gc3RvcmUgVmVjdG9yPFVuaXF1ZVJlZjxJ
bnZhbGlkYXRpb25SdWxlU2V0Pj4gaW5zdGVhZCBvZiBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNl
dD4gaW5zaWRlCisgICAgICAgIG1fY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cy4gVGhpcyB3YXks
IGV2ZW4gaWYgdGhlIEhhc2hNYXAgZ2V0cyByZWhhc2hlZCBhbmQgdGhlIFZlY3RvcnMgZ2V0IG1v
dmVkLCBvdXIKKyAgICAgICAgcG9pbnRlcnMgaW5zaWRlIG1faW52YWxpZGF0aW9uUnVsZVNldHMg
d291bGQgbm8gbG9uZ2VyIGdldCBpbnZhbGlkYXRlZC4KKworICAgICAgICBOb3RlIHRoYXQgYW5v
dGhlciB0aGVvcnkgaXMgdGhhdCBEb2N1bWVudFJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBn
ZXRzIGNhbGxlZCBhcyB3ZSBpdGVyYXRlIG92ZXIKKyAgICAgICAgbV9pbnZhbGlkYXRpb25SdWxl
U2V0cywgd2hpY2ggY2xlYXJzIHRoZSBEb2N1bWVudFJ1bGVTZXRzOjptX2NsYXNzSW52YWxpZGF0
aW9uUnVsZVNldHMgSGFzaE1hcC4gSWYgdGhpcyBpcworICAgICAgICB3aGF0IGlzIHJlYWxseSBo
YXBwZW5pbmcgdGhlbiBteSBzcGVjdWxhdGl2ZSBmaXggd291bGQgbm90IHdvcmsuIFRoaXMgd291
bGQgYmUgZml4YWJsZSBieSBoYXZpbmcgSW52YWxpZGF0aW9uUnVsZVNldAorICAgICAgICBzdWJj
bGFzcyBDYW5NYWtlV2Vha1B0cjw+LiBIb3dldmVyLCBJIGhhdmUgb3B0ZWQgbm90IHRvIGRvIGl0
IGluIHRoaXMgcGF0Y2ggYmVjYXVzZSB0aGlzIGlzIHZlcnkgc3BlY3VsYXRpdmUgYW5kCisgICAg
ICAgIGl0IG1heSBoYXZlIGEgY29zdCBpbiB0ZXJtcyBvZiBtZW1vcnkgYW5kIHBlcmZvcm1hbmNl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgd2UgZG8gbm90IGtub3cgaG93IHRvIHJlcHJvZHVj
ZS4KKworICAgICAgICAqIGNzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50UnVsZVNldHM6OmNsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6YXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRSdWxlU2V0czo6aGFzQ29tcGxleFNl
bGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlIGNvbnN0KToKKyAgICAgICAgKiBjc3MvRG9jdW1lbnRS
dWxlU2V0cy5oOgorICAgICAgICAoV2ViQ29yZTo6SW52YWxpZGF0aW9uUnVsZVNldDo6SW52YWxp
ZGF0aW9uUnVsZVNldCk6CisgICAgICAgICogc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlk
YXRpb246OmludmFsaWRhdGVTdHlsZSk6CisgICAgICAgICogc3R5bGUvQ2xhc3NDaGFuZ2VJbnZh
bGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uOjpjb21wdXRlSW52YWxpZGF0aW9uKToKKwogMjAxOS0wNy0zMSAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEVsZW1lbnQub3V0ZXJIVE1MIGlzIG1pc3Np
bmcgYXR0cmlidXRlIHByZWZpeGVzIGluIHNvbWUgY2FzZXMgaW4gSFRNTCBkb2N1bWVudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRzLmNwcAppbmRleCAwY2IwZmZjNWMyYmEwNmY3
NGQ2ZGMwN2Y3MDIzNGVjMmIwMmZmNGM1Li5iMTYyNjVjOTc5OTNmMTBlOGQ3OTlhMTQ0NDJhMzA0
OTRkZGU4MTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxlU2V0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuY3BwCkBAIC0x
NzQsOSArMTc0LDkgQEAgdm9pZCBEb2N1bWVudFJ1bGVTZXRzOjpjb2xsZWN0RmVhdHVyZXMoKSBj
b25zdAogICAgIG1fZmVhdHVyZXMuc2hyaW5rVG9GaXQoKTsKIH0KIAotc3RhdGljIFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRv
bVN0cmluZyYga2V5LCBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
SW52YWxpZGF0aW9uUnVsZVNldD4+PiYgcnVsZVNldE1hcCwgY29uc3QgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+JiBydWxlRmVhdHVyZXMp
CitzdGF0aWMgVmVjdG9yPFVuaXF1ZVJlZjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4qIGVuc3VyZUlu
dmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGtleSwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPFVuaXF1ZVJlZjxJbnZhbGlkYXRpb25SdWxlU2V0
Pj4+PiYgcnVsZVNldE1hcCwgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFJ1bGVGZWF0dXJlPj4+JiBydWxlRmVhdHVyZXMpCiB7Ci0gICAgcmV0dXJuIHJ1
bGVTZXRNYXAuZW5zdXJlKGtleSwgWyZdICgpIC0+IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52
YWxpZGF0aW9uUnVsZVNldD4+IHsKKyAgICByZXR1cm4gcnVsZVNldE1hcC5lbnN1cmUoa2V5LCBb
Jl0gKCkgLT4gc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxVbmlxdWVSZWY8SW52YWxpZGF0aW9uUnVs
ZVNldD4+PiB7CiAgICAgICAgIGF1dG8qIGZlYXR1cmVzID0gcnVsZUZlYXR1cmVzLmdldChrZXkp
OwogICAgICAgICBpZiAoIWZlYXR1cmVzKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBA
IC0xOTIsMjEgKzE5MiwyMSBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBl
bnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJgogICAgICAgICAgICAg
aWYgKGZlYXR1cmUuaW52YWxpZGF0aW9uU2VsZWN0b3IpCiAgICAgICAgICAgICAgICAgaW52YWxp
ZGF0aW9uU2VsZWN0b3JBcnJheVthcnJheUluZGV4XS5hcHBlbmQoZmVhdHVyZS5pbnZhbGlkYXRp
b25TZWxlY3Rvcik7CiAgICAgICAgIH0KLSAgICAgICAgYXV0byBpbnZhbGlkYXRpb25SdWxlU2V0
cyA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+PigpOworICAg
ICAgICBhdXRvIGludmFsaWRhdGlvblJ1bGVTZXRzID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8
VW5pcXVlUmVmPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4oKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1hdGNoRWxlbWVudEFycmF5LnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICBpZiAobWF0Y2hFbGVtZW50QXJyYXlbaV0pCi0gICAgICAgICAgICAgICAgaW52YWxpZGF0aW9u
UnVsZVNldHMtPmFwcGVuZCh7IHN0YXRpY19jYXN0PE1hdGNoRWxlbWVudD4oaSksIFdURk1vdmUo
bWF0Y2hFbGVtZW50QXJyYXlbaV0pLCBXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVjdG9yQXJyYXlb
aV0pIH0pOworICAgICAgICAgICAgICAgIGludmFsaWRhdGlvblJ1bGVTZXRzLT5hcHBlbmQobWFr
ZVVuaXF1ZVJlZjxJbnZhbGlkYXRpb25SdWxlU2V0PihzdGF0aWNfY2FzdDxNYXRjaEVsZW1lbnQ+
KGkpLCBXVEZNb3ZlKG1hdGNoRWxlbWVudEFycmF5W2ldKSwgV1RGTW92ZShpbnZhbGlkYXRpb25T
ZWxlY3RvckFycmF5W2ldKSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBpbnZhbGlkYXRp
b25SdWxlU2V0czsKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9CiAKLWNvbnN0IFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogRG9jdW1lbnRSdWxlU2V0czo6Y2xhc3NJbnZhbGlk
YXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBjbGFzc05hbWUpIGNvbnN0Citjb25zdCBW
ZWN0b3I8VW5pcXVlUmVmPEludmFsaWRhdGlvblJ1bGVTZXQ+PiogRG9jdW1lbnRSdWxlU2V0czo6
Y2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBjbGFzc05hbWUpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGVuc3VyZUludmFsaWRhdGlvblJ1bGVTZXRzKGNsYXNzTmFtZSwg
bV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLCBtX2ZlYXR1cmVzLmNsYXNzUnVsZXMpOwogfQog
Ci1jb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIERvY3VtZW50UnVsZVNldHM6OmF0
dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5h
bWUpIGNvbnN0Citjb25zdCBWZWN0b3I8VW5pcXVlUmVmPEludmFsaWRhdGlvblJ1bGVTZXQ+Piog
RG9jdW1lbnRSdWxlU2V0czo6YXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRv
bVN0cmluZyYgYXR0cmlidXRlTmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gZW5zdXJlSW52YWxp
ZGF0aW9uUnVsZVNldHMoYXR0cmlidXRlTmFtZSwgbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxl
U2V0cywgbV9mZWF0dXJlcy5hdHRyaWJ1dGVSdWxlcyk7CiB9CkBAIC0yMTgsNyArMjE4LDcgQEAg
Ym9vbCBEb2N1bWVudFJ1bGVTZXRzOjpoYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1
dGUoKSBjb25zdAogICAgICAgICBpZiAoIXJ1bGVTZXRzKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBmb3IgKGF1dG8mIHJ1bGVTZXQgOiAqcnVsZVNldHMpIHsKLSAgICAgICAg
ICAgIGlmIChydWxlU2V0Lm1hdGNoRWxlbWVudCAhPSBNYXRjaEVsZW1lbnQ6OlN1YmplY3QpCisg
ICAgICAgICAgICBpZiAocnVsZVNldC0+bWF0Y2hFbGVtZW50ICE9IE1hdGNoRWxlbWVudDo6U3Vi
amVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9jdW1lbnRSdWxl
U2V0cy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0RvY3VtZW50UnVsZVNldHMuaAppbmRleCAyYjE2
Y2ZmZDk5Nzk3M2I4NzE2NWY5ZGUyMzhmNjVmYTUyYWM4MDZiLi5lZmFjNTdkNGYzYWU5ZTQ0MTU1
ZGY0OTNiZDNkNjdhODQzYjRiNDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRG9j
dW1lbnRSdWxlU2V0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Eb2N1bWVudFJ1bGVTZXRz
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzksNiArNDAsMTIgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczsKIGNsYXNzIE1lZGlh
UXVlcnlFdmFsdWF0b3I7CiAKIHN0cnVjdCBJbnZhbGlkYXRpb25SdWxlU2V0IHsKKyAgICBJbnZh
bGlkYXRpb25SdWxlU2V0KE1hdGNoRWxlbWVudCBtYXRjaEVsZW1lbnQsIHN0ZDo6dW5pcXVlX3B0
cjxSdWxlU2V0PiYmIHJ1bGVTZXQsIFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+JiYgaW52YWxp
ZGF0aW9uU2VsZWN0b3JzKQorICAgICAgICA6IG1hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpCisg
ICAgICAgICwgcnVsZVNldChXVEZNb3ZlKHJ1bGVTZXQpKQorICAgICAgICAsIGludmFsaWRhdGlv
blNlbGVjdG9ycyhXVEZNb3ZlKGludmFsaWRhdGlvblNlbGVjdG9ycykpCisgICAgeyB9CisKICAg
ICBNYXRjaEVsZW1lbnQgbWF0Y2hFbGVtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0
PiBydWxlU2V0OwogICAgIFZlY3Rvcjxjb25zdCBDU1NTZWxlY3Rvcio+IGludmFsaWRhdGlvblNl
bGVjdG9yczsKQEAgLTU5LDggKzY2LDggQEAgcHVibGljOgogICAgIFJ1bGVTZXQqIHNpYmxpbmco
KSBjb25zdCB7IHJldHVybiBtX3NpYmxpbmdSdWxlU2V0LmdldCgpOyB9CiAgICAgUnVsZVNldCog
dW5jb21tb25BdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX3VuY29tbW9uQXR0cmlidXRlUnVs
ZVNldC5nZXQoKTsgfQogCi0gICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBj
bGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmIGNsYXNzTmFtZSkgY29u
c3Q7Ci0gICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBhdHRyaWJ1dGVJbnZh
bGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBjb25zdDsK
KyAgICBjb25zdCBWZWN0b3I8VW5pcXVlUmVmPEludmFsaWRhdGlvblJ1bGVTZXQ+PiogY2xhc3NJ
bnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBjbGFzc05hbWUpIGNvbnN0Owor
ICAgIGNvbnN0IFZlY3RvcjxVbmlxdWVSZWY8SW52YWxpZGF0aW9uUnVsZVNldD4+KiBhdHRyaWJ1
dGVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKSBj
b25zdDsKIAogICAgIGJvb2wgaGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlKCkg
Y29uc3Q7CiAKQEAgLTg5LDggKzk2LDggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFJ1bGVGZWF0
dXJlU2V0IG1fZmVhdHVyZXM7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNldD4g
bV9zaWJsaW5nUnVsZVNldDsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU2V0PiBt
X3VuY29tbW9uQXR0cmlidXRlUnVsZVNldDsKLSAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xhc3NJ
bnZhbGlkYXRpb25SdWxlU2V0czsKLSAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywgc3Rk
Ojp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fYXR0cmlidXRlSW52
YWxpZGF0aW9uUnVsZVNldHM7CisgICAgbXV0YWJsZSBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8VW5pcXVlUmVmPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4+IG1fY2xh
c3NJbnZhbGlkYXRpb25SdWxlU2V0czsKKyAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxVbmlxdWVSZWY8SW52YWxpZGF0aW9uUnVsZVNldD4+Pj4g
bV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0czsKIAogICAgIG11dGFibGUgT3B0aW9uYWw8
Ym9vbD4gbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGU7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9BdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwCmluZGV4IDQ5MWJhMmRhYjQ2MzYwODlhZDViODkxNWVkMGNlNDExY2YwMjJlZWMuLjhmYTFi
MWZmN2RlZjk4YTg5YjMxMDY4NDZhZjY3YWZmYzBiMTlhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL0F0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtNzUsMTEg
Kzc1LDExIEBAIHZvaWQgQXR0cmlidXRlQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlU3R5
bGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZvciAoYXV0byYgaW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykg
ewotICAgICAgICBmb3IgKGF1dG8qIHNlbGVjdG9yIDogaW52YWxpZGF0aW9uUnVsZVNldC5pbnZh
bGlkYXRpb25TZWxlY3RvcnMpIHsKKyAgICAgICAgZm9yIChhdXRvKiBzZWxlY3RvciA6IGludmFs
aWRhdGlvblJ1bGVTZXQtPmludmFsaWRhdGlvblNlbGVjdG9ycykgewogICAgICAgICAgICAgYm9v
bCBvbGRNYXRjaGVzID0gIW9sZFZhbHVlLmlzTnVsbCgpICYmIFNlbGVjdG9yQ2hlY2tlcjo6YXR0
cmlidXRlU2VsZWN0b3JNYXRjaGVzKG1fZWxlbWVudCwgYXR0cmlidXRlTmFtZSwgb2xkVmFsdWUs
ICpzZWxlY3Rvcik7CiAgICAgICAgICAgICBib29sIG5ld01hdGNoZXMgPSAhbmV3VmFsdWUuaXNO
dWxsKCkgJiYgU2VsZWN0b3JDaGVja2VyOjphdHRyaWJ1dGVTZWxlY3Rvck1hdGNoZXMobV9lbGVt
ZW50LCBhdHRyaWJ1dGVOYW1lLCBuZXdWYWx1ZSwgKnNlbGVjdG9yKTsKICAgICAgICAgICAgIGlm
IChvbGRNYXRjaGVzICE9IG5ld01hdGNoZXMpIHsKLSAgICAgICAgICAgICAgICBtX2ludmFsaWRh
dGlvblJ1bGVTZXRzLmFwcGVuZCgmaW52YWxpZGF0aW9uUnVsZVNldCk7CisgICAgICAgICAgICAg
ICAgbV9pbnZhbGlkYXRpb25SdWxlU2V0cy5hcHBlbmQoJmludmFsaWRhdGlvblJ1bGVTZXQuZ2V0
KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKaW5k
ZXggYzkwYWMzM2E2ZDk5ZGE2ZTczZjhhZmRjNzI3NzUyZmNhZGI1Mzg1Ni4uOWQ2YmJkMmFjMmRj
MmM0ZTI5ZDQwOGZkYzQzMGUwOGE3Zjk4ZjI5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQg
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb246OmNvbXB1dGVJbnZhbGlkYXRpb24oY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgb2xkQ2xhCiAgICAgZm9yIChhdXRvKiBjaGFuZ2VkQ2xhc3MgOiBjaGFuZ2Vk
Q2xhc3NlcykgewogICAgICAgICBpZiAoYXV0byogaW52YWxpZGF0aW9uUnVsZVNldHMgPSBydWxl
U2V0cy5jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGNoYW5nZWRDbGFzcykpIHsKICAgICAgICAg
ICAgIGZvciAoYXV0byYgaW52YWxpZGF0aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0
cykKLSAgICAgICAgICAgICAgICBtX2ludmFsaWRhdGlvblJ1bGVTZXRzLmFwcGVuZCgmaW52YWxp
ZGF0aW9uUnVsZVNldCk7CisgICAgICAgICAgICAgICAgbV9pbnZhbGlkYXRpb25SdWxlU2V0cy5h
cHBlbmQoJmludmFsaWRhdGlvblJ1bGVTZXQuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>