<?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>144399</bug_id>
          
          <creation_ts>2015-04-29 10:38:12 -0700</creation_ts>
          <short_desc>REGRESSION: js/dom/navigator-plugins-crash.html asserts a lot</short_desc>
          <delta_ts>2015-06-18 12:39:33 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=16815</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=142506</see_also>
          <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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Conrad Shultz">conrad_shultz</assigned_to>
          <cc>andersca</cc>
    
    <cc>conrad_shultz</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090061</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-29 10:38:12 -0700</bug_when>
    <thetext>Only happening on Apple Yosemite Debug WK2.

https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=js%2Fdom%2Fnavigator-plugins-crash.html

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x00000001153eee17 WTFCrash + 39
1   com.apple.WebCore             	0x0000000116ae5a99 WTF::CrashOnOverflow::overflowed() + 9
2   com.apple.WebCore             	0x000000011717d791 WTF::Vector&lt;WebCore::PluginInfo, 0ul, WTF::CrashOnOverflow, 16ul&gt;::at(unsigned long) + 81 (Vector.h:660)
3   com.apple.WebCore             	0x000000011717d65d WTF::Vector&lt;WebCore::PluginInfo, 0ul, WTF::CrashOnOverflow, 16ul&gt;::operator[](unsigned long) + 29 (Vector.h:679)
4   com.apple.WebCore             	0x000000011717cfdf WebCore::DOMPlugin::pluginInfo() const + 79 (DOMPlugin.cpp:61)
5   com.apple.WebCore             	0x000000011717cf67 WebCore::DOMPlugin::name() const + 39 (DOMPlugin.cpp:41)
6   com.apple.WebCore             	0x00000001179e6ff7 WebCore::jsDOMPluginName(JSC::ExecState*, JSC::JSObject*, long long, JSC::PropertyName) + 71 (JSDOMPlugin.cpp:240)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090130</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-29 12:55:48 -0700</bug_when>
    <thetext>I don&apos;t know why this started now, but the code is somewhat new too, as it was added in  &lt;http://trac.webkit.org/changeset/181562&gt;.

I don&apos;t think that there is any guarantee of m_index remaining a valid index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090132</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-04-29 12:56:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/20750473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102296</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-06-16 11:40:48 -0700</bug_when>
    <thetext>Marked the test as flakily crashing in r185598.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102593</commentid>
    <comment_count>4</comment_count>
      <attachid>255023</attachid>
    <who name="Conrad Shultz">conrad_shultz</who>
    <bug_when>2015-06-17 10:52:47 -0700</bug_when>
    <thetext>Created attachment 255023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102679</commentid>
    <comment_count>5</comment_count>
      <attachid>255023</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-17 15:43:27 -0700</bug_when>
    <thetext>Comment on attachment 255023
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=255023&amp;action=review

&gt; Source/WebCore/plugins/DOMPlugin.cpp:31
&gt; +    , m_pluginInfo(pluginInfo)

I think this could be WTF::move(pluginInfo) for slightly better performance.

&gt; Source/WebCore/plugins/DOMPlugin.h:36
&gt; +    static Ref&lt;DOMPlugin&gt; create(PluginData* pluginData, Frame* frame, PluginInfo pluginInfo) { return adoptRef(*new DOMPlugin(pluginData, frame, pluginInfo)); }

I think this could use WTF::move(pluginInfo) for slightly better performance.

Should take a PluginData&amp; argument instead of PluginData*.

&gt; Source/WebCore/plugins/DOMPluginArray.cpp:90
&gt;      const Vector&lt;PluginInfo&gt;&amp; plugins = data-&gt;webVisiblePlugins();
&gt;      for (unsigned i = 0; i &lt; plugins.size(); ++i) {
&gt;          if (plugins[i].name == propertyName)
&gt; -            return DOMPlugin::create(data, m_frame, i);
&gt; +            return DOMPlugin::create(data, m_frame, plugins[i]);
&gt;      }

Should be rewritten as a modern for loop:

    for (auto&amp; plugin : data-&gt;webVisiblePlugins()) {
        if (plugin.name == propertyName)
            return DOMPlugin::create(data, m_frame, plugin);
    }

The loop used the old fashioned form only because it wanted an &quot;i&quot; to pass to DOMPlugin::create.

&gt; Source/WebCore/plugins/PluginData.h:76
&gt; +inline bool operator==(PluginInfo a, PluginInfo b)

Better to take const PluginInfo&amp; arguments instead of copying the PluginInfo objects just to compare them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102907</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-06-18 07:22:36 -0700</bug_when>
    <thetext>Please revert the change in r185598 when this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102981</commentid>
    <comment_count>7</comment_count>
      <attachid>255023</attachid>
    <who name="Conrad Shultz">conrad_shultz</who>
    <bug_when>2015-06-18 11:33:49 -0700</bug_when>
    <thetext>Comment on attachment 255023
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=255023&amp;action=review

Thanks, Darin!

&gt;&gt; Source/WebCore/plugins/DOMPlugin.cpp:31
&gt;&gt; +    , m_pluginInfo(pluginInfo)
&gt; 
&gt; I think this could be WTF::move(pluginInfo) for slightly better performance.

Done.

&gt;&gt; Source/WebCore/plugins/DOMPlugin.h:36
&gt;&gt; +    static Ref&lt;DOMPlugin&gt; create(PluginData* pluginData, Frame* frame, PluginInfo pluginInfo) { return adoptRef(*new DOMPlugin(pluginData, frame, pluginInfo)); }
&gt; 
&gt; I think this could use WTF::move(pluginInfo) for slightly better performance.
&gt; 
&gt; Should take a PluginData&amp; argument instead of PluginData*.

I adopted WTF::move(), but changing PluginData is outside the scope of this bug and has wider ramifications, so I&apos;d prefer to address that separately.

&gt;&gt; Source/WebCore/plugins/DOMPluginArray.cpp:90
&gt;&gt;      }
&gt; 
&gt; Should be rewritten as a modern for loop:
&gt; 
&gt;     for (auto&amp; plugin : data-&gt;webVisiblePlugins()) {
&gt;         if (plugin.name == propertyName)
&gt;             return DOMPlugin::create(data, m_frame, plugin);
&gt;     }
&gt; 
&gt; The loop used the old fashioned form only because it wanted an &quot;i&quot; to pass to DOMPlugin::create.

Good catch. Fixed.

&gt;&gt; Source/WebCore/plugins/PluginData.h:76
&gt;&gt; +inline bool operator==(PluginInfo a, PluginInfo b)
&gt; 
&gt; Better to take const PluginInfo&amp; arguments instead of copying the PluginInfo objects just to compare them.

Yup, done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102996</commentid>
    <comment_count>8</comment_count>
    <who name="Conrad Shultz">conrad_shultz</who>
    <bug_when>2015-06-18 12:32:56 -0700</bug_when>
    <thetext>Committed r185717: &lt;http://trac.webkit.org/changeset/185717&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103001</commentid>
    <comment_count>9</comment_count>
    <who name="Conrad Shultz">conrad_shultz</who>
    <bug_when>2015-06-18 12:39:33 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Please revert the change in r185598 when this lands.

Done in r185718.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255023</attachid>
            <date>2015-06-17 10:52:47 -0700</date>
            <delta_ts>2015-06-17 15:43:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144399-20150617105211.patch</filename>
            <type>text/plain</type>
            <size>11161</size>
            <attacher name="Conrad Shultz">conrad_shultz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ExNWFhMzM3ZmRiOTA0
ZTZjNmFhNWU5OGI5MWUxMTU2ZTcyZjBhMC4uNDc4ZWIyNGM4ZWFjMDg0MWViMzcyZmU1NTA4YjRk
MDdiMWY5OWMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE1LTA2LTE3ICBDb25y
YWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TjoganMvZG9tL25hdmlnYXRvci1wbHVnaW5zLWNyYXNoLmh0bWwgYXNzZXJ0cyBhIGxvdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0Mzk5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWFybGllciB3b3Jr
IG1hZGUgdGhlIGFycmF5IG9mIHdlYi12aXNpYmxlIHBsdWctaW5zIGR5bmFtaWMsIGJ1dCBhbGxv
d2VkIERPTVBsdWdpbiAoYW5kLCBpbmRpcmVjdGx5IGJ5IGV4dGVuc2lvbiwKKyAgICAgICAgRE9N
TWltZVR5cGUpIHRvIGNvbnRpbnVlIGtlZXBpbmcgYSByZWZlcmVuY2UgdG8gYSBwbHVnLWluIGlu
IHRlcm1zIG9mIGFuIGluZGV4IGludG8gdGhhdCBhcnJheS4gVGhpcyBzdXBlcmZpY2lhbGx5Cisg
ICAgICAgIGFwcGVhcmVkIGNvcnJlY3Qgc2luY2UgRE9NUGx1Z2luIGltbXV0YWJseSBob2xkcyBv
bnRvIGEgUGx1Z2luRGF0YSBpbnN0YW5jZSwgd2hpY2ggaW4gdHVybiBpbW11dGFibHkgaG9sZHMg
b250byBhCisgICAgICAgIFBhZ2UgaW5zdGFuY2UuIFBsdWdpblN0cmF0ZWd5OjpnZXRXZWJWaXNp
YmxlUGx1Z2luSW5mbygpIGlzIHBhc3NlZCB0aGlzIFBhZ2UsIHdoaWNoIGlzIHVzZWQgdG8gZGV0
ZXJtaW5lIHRoZSBjb250ZW50cworICAgICAgICBvZiB0aGUgcGx1Z2luIGFycmF5LiBUaGUgZXhw
ZWN0YXRpb24gd2FzIHRoYXQga2VlcGluZyBhbiBpbmRleCB3b3VsZCBzdGlsbCBiZSBzYWZlIHNp
bmNlIHRoZSBQYWdlIGlzIG5vdCBjaGFuZ2luZywKKyAgICAgICAgYnV0IHRoaXMgaXMgbm90IHN0
cmljdGx5IGNvcnJlY3Qgc2luY2UgcmVsZXZhbnQgYXR0cmlidXRlcyBvZiB0aGUgUGFnZSBhbmQv
b3IgdGhlIGF2YWlsYWJsZSBwbHVnaW5zIG1heSBzdGlsbCBjaGFuZ2UuCisKKyAgICAgICAgSXQn
cyBub3QgZW50aXJlbHkgY2xlYXIgd2h5IHRoZSB0ZXN0IGZhaWx1cmVzIGFyZSBpbnRlcm1pdHRl
bnQgYW5kIG9jY3VyIG9ubHkgb24gY2VydGFpbiBjb25maWd1cmF0aW9ucywgYnV0IGFkZHJlc3MK
KyAgICAgICAgdGhlbSBieSBlbGltaW5hdGluZyB0aGUgaW5jb3JyZWN0IHN0b3JhZ2Ugb2YgaW5k
ZXhlcyBpbiBmYXZvciBvZiBrZWVwaW5nIGNvcGllcyBvZiB0aGUgcmVsZXZhbnQgcGx1Z2luIGlu
Zm8gaXRzZWxmLgorCisgICAgICAgICogcGx1Z2lucy9ET01NaW1lVHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01NaW1lVHlwZTo6RE9NTWltZVR5cGUpOgorICAgICAgICBJbnN0ZWFkIG9m
IHN0b3JpbmcgdGhlIE1JTUUgdHlwZSBpbmRleCwgcmV0cmlldmUgYW5kIHN0b3JlIHRoZSBNSU1F
IGNsYXNzIGluZm8gYW5kIHBsdWdpbiBpbmZvLgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5
cGU6OnR5cGUpOgorICAgICAgICBEaXJlY3RseSBhY2Nlc3MgdGhlIG1fbWltZUNsYXNzSW5mbyBt
ZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZTo6c3VmZml4ZXMpOgorICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTU1pbWVUeXBlOjpkZXNjcmlwdGlvbik6Cisg
ICAgICAgIERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RE9NTWltZVR5cGU6OmVuYWJsZWRQbHVn
aW4pOgorICAgICAgICBEaXJlY3RseSBhY2Nlc3MgdGhlIG1fcGx1Z2luSW5mbyBtZW1iZXIuCisg
ICAgICAgIChXZWJDb3JlOjpET01NaW1lVHlwZTo6bWltZUNsYXNzSW5mbyk6IERlbGV0ZWQuCisK
KyAgICAgICAgKiBwbHVnaW5zL0RPTU1pbWVUeXBlLmg6CisgICAgICAgIFVwZGF0ZSBtZW1iZXIg
dmFyaWFibGVzLgorCisgICAgICAgICogcGx1Z2lucy9ET01QbHVnaW4uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RE9NUGx1Z2luOjpET01QbHVnaW4pOgorICAgICAgICBJbnN0ZWFkIG9mIHN0b3Jp
bmcgdGhlIHBsdWdpbiBpbmRleCwgc3RvcmUgdGhlIHBsdWdpbiBpbmZvIGRpcmVjdGx5LgorICAg
ICAgICAoV2ViQ29yZTo6RE9NUGx1Z2luOjpuYW1lKToKKyAgICAgICAgRGlyZWN0bHkgYWNjZXNz
IG1fcGx1Z2luSW5mby4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6ZmlsZW5hbWUpOgor
ICAgICAgICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6ZGVzY3JpcHRpb24p
OgorICAgICAgICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbjo6bGVuZ3RoKToK
KyAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpET01QbHVnaW46Oml0ZW0pOgorICAg
ICAgICBBY2Nlc3MgbV9wbHVnaW5JbmZvIGRpcmVjdGx5OyBmaW5kIHRoZSBtYXRjaGluZyBwbHVn
LWluIGJhc2VkIG9uIG1hdGNoaW5nIFBsdWdpbkluZm8gKGZvciB3aGljaCBhbiBvdmVybG9hZGVk
CisgICAgICAgIGNvbXBhcmF0b3IgaXMgc3VwcGxpZWQgYmVsb3cpLgorICAgICAgICAoV2ViQ29y
ZTo6RE9NUGx1Z2luOjpwbHVnaW5JbmZvKTogRGVsZXRlZC4KKworICAgICAgICAqIHBsdWdpbnMv
RE9NUGx1Z2luLmg6CisgICAgICAgIFVwZGF0ZSBtZW1iZXIgdmFyaWFibGVzLgorICAgICAgICAo
V2ViQ29yZTo6RE9NUGx1Z2luOjpjcmVhdGUpOgorICAgICAgICBBY2NlcHQgYSBQbHVnaW5JbmZv
IGluc3RlYWQgb2YgYSBwbHVnaW4gaW5kZXguCisKKyAgICAgICAgKiBwbHVnaW5zL0RPTVBsdWdp
bkFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5OjppdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5OjpuYW1lZEl0ZW0pOgorCisgICAgICAgICog
cGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAg
ICAgICAgQWRkZWQ7IGNvbXBhcmUgUGx1Z2luSW5mbyBzdHJ1Y3RzIG9uIHRoZSBiYXNpcyBvZiBt
ZW1iZXIgZXF1YWxpdHkuCisKIDIwMTUtMDYtMTYgIHN5bHZhaW4tZ2FsaW5lYXUgIDxnYWxpbmVh
dUBhZG9iZS5jb20+CiAKICAgICAgICAgSW5jb3JyZWN0IG9yZGVyIG9mIGFyZ3VtZW50cyBpbiBp
bml0aWFsLWxldHRlciBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01NaW1lVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmNw
cAppbmRleCA1NTQyOTUyNTY2YTVhNzNhY2FmZjMzY2MyYjQ1YWQ4MTMyZDU5ZDdhLi41MDgyNmNh
OTU3MzBmNmQ2YTg5NTVmNDljMGMwMDI2YTIzNjY3ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0RPTU1pbWVUeXBlLmNwcApAQCAtMzIsOCArMzIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
RE9NTWltZVR5cGU6OkRPTU1pbWVUeXBlKFBhc3NSZWZQdHI8UGx1Z2luRGF0YT4gcGx1Z2luRGF0
YSwgRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBpbmRleCkKICAgICA6IEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlcihmcmFtZSkKICAgICAsIG1fcGx1Z2luRGF0YShwbHVnaW5EYXRhKQotICAgICwgbV9p
bmRleChpbmRleCkKIHsKKyAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZXM7CisgICAgVmVj
dG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7CisgICAgbV9wbHVnaW5EYXRhLT5nZXRXZWJW
aXNpYmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7Cisg
ICAgbV9taW1lQ2xhc3NJbmZvID0gbWltZXNbaW5kZXhdOworICAgIG1fcGx1Z2luSW5mbyA9IG1f
cGx1Z2luRGF0YS0+d2ViVmlzaWJsZVBsdWdpbnMoKVttaW1lUGx1Z2luSW5kaWNlc1tpbmRleF1d
OwogfQogCiBET01NaW1lVHlwZTo6fkRPTU1pbWVUeXBlKCkKQEAgLTQyLDEyICs0NiwxMiBAQCBE
T01NaW1lVHlwZTo6fkRPTU1pbWVUeXBlKCkKIAogU3RyaW5nIERPTU1pbWVUeXBlOjp0eXBlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbWltZUNsYXNzSW5mbygpLnR5cGU7CisgICAgcmV0dXJuIG1f
bWltZUNsYXNzSW5mby50eXBlOwogfQogCiBTdHJpbmcgRE9NTWltZVR5cGU6OnN1ZmZpeGVzKCkg
Y29uc3QKIHsKLSAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZXh0ZW5zaW9ucyA9IG1pbWVDbGFz
c0luZm8oKS5leHRlbnNpb25zOworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBleHRlbnNpb25z
ID0gbV9taW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnM7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxk
ZXI7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleHRlbnNpb25zLnNpemUoKTsgKytpKSB7
CkBAIC02MCwxNSArNjQsNyBAQCBTdHJpbmcgRE9NTWltZVR5cGU6OnN1ZmZpeGVzKCkgY29uc3QK
IAogU3RyaW5nIERPTU1pbWVUeXBlOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1pbWVDbGFzc0luZm8oKS5kZXNjOwotfQotCi1NaW1lQ2xhc3NJbmZvIERPTU1pbWVUeXBlOjpt
aW1lQ2xhc3NJbmZvKCkgY29uc3QKLXsKLSAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZXM7
Ci0gICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7Ci0gICAgbV9wbHVnaW5EYXRh
LT5nZXRXZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5k
aWNlcyk7Ci0gICAgcmV0dXJuIG1pbWVzW21faW5kZXhdOworICAgIHJldHVybiBtX21pbWVDbGFz
c0luZm8uZGVzYzsKIH0KIAogUGFzc1JlZlB0cjxET01QbHVnaW4+IERPTU1pbWVUeXBlOjplbmFi
bGVkUGx1Z2luKCkgY29uc3QKQEAgLTc5LDcgKzc1LDcgQEAgUGFzc1JlZlB0cjxET01QbHVnaW4+
IERPTU1pbWVUeXBlOjplbmFibGVkUGx1Z2luKCkgY29uc3QKICAgICBWZWN0b3I8TWltZUNsYXNz
SW5mbz4gbWltZXM7CiAgICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7CiAgICAg
bV9wbHVnaW5EYXRhLT5nZXRXZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1pbWVzLCBt
aW1lUGx1Z2luSW5kaWNlcyk7Ci0gICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKG1fcGx1Z2lu
RGF0YS5nZXQoKSwgbV9mcmFtZSwgbWltZVBsdWdpbkluZGljZXNbbV9pbmRleF0pOworICAgIHJl
dHVybiBET01QbHVnaW46OmNyZWF0ZShtX3BsdWdpbkRhdGEuZ2V0KCksIG1fZnJhbWUsIG1fcGx1
Z2luSW5mbyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
RE9NTWltZVR5cGUuaAppbmRleCBjZTU0MjNjMDBmM2JhMWEzYzkxNTVhMDdmNzMxMmY5ZmE1YmI4
Mjg5Li44MTMxZTAzOGY3ZDE1MjkyZjg2ZWM1MmEzNmVjMGU4NWQ4NjM4OGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01NaW1lVHlwZS5oCkBAIC00MiwxMSArNDIsMTAgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBlbmFibGVkUGx1Z2luKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgTWltZUNsYXNzSW5mbyBtaW1lQ2xhc3NJbmZvKCkgY29uc3Q7Ci0KICAgICBET01NaW1l
VHlwZShQYXNzUmVmUHRyPFBsdWdpbkRhdGE+LCBGcmFtZSosIHVuc2lnbmVkIGluZGV4KTsKKyAg
ICBNaW1lQ2xhc3NJbmZvIG1fbWltZUNsYXNzSW5mbzsKICAgICBSZWZQdHI8UGx1Z2luRGF0YT4g
bV9wbHVnaW5EYXRhOwotICAgIHVuc2lnbmVkIG1faW5kZXg7CisgICAgUGx1Z2luSW5mbyBtX3Bs
dWdpbkluZm87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0RPTVBsdWdpbi5jcHAKaW5kZXggZTNjOTY2NDhmMjJlOGY0Y2Q1ZWRmZGZmYTVlNGU4YjM0MDY3
NjU5NC4uMWM4NGM0OWRlOGFkNDU4MThjOTQ2MzAyODliZjVmYzQwMTM3NzEwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNwcApAQCAtMjUsMTAgKzI1LDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRE9NUGx1Z2luOjpET01QbHVnaW4oUGx1Z2luRGF0YSogcGx1Z2luRGF0
YSwgRnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBpbmRleCkKK0RPTVBsdWdpbjo6RE9NUGx1Z2luKFBs
dWdpbkRhdGEqIHBsdWdpbkRhdGEsIEZyYW1lKiBmcmFtZSwgUGx1Z2luSW5mbyBwbHVnaW5JbmZv
KQogICAgIDogRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKGZyYW1lKQogICAgICwgbV9wbHVnaW5E
YXRhKHBsdWdpbkRhdGEpCi0gICAgLCBtX2luZGV4KGluZGV4KQorICAgICwgbV9wbHVnaW5JbmZv
KHBsdWdpbkluZm8pCiB7CiB9CiAKQEAgLTM4LDQxICszOCwzNyBAQCBET01QbHVnaW46On5ET01Q
bHVnaW4oKQogCiBTdHJpbmcgRE9NUGx1Z2luOjpuYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
cGx1Z2luSW5mbygpLm5hbWU7CisgICAgcmV0dXJuIG1fcGx1Z2luSW5mby5uYW1lOwogfQogCiBT
dHJpbmcgRE9NUGx1Z2luOjpmaWxlbmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBsdWdpbklu
Zm8oKS5maWxlOworICAgIHJldHVybiBtX3BsdWdpbkluZm8uZmlsZTsKIH0KIAogU3RyaW5nIERP
TVBsdWdpbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBwbHVnaW5JbmZvKCku
ZGVzYzsKKyAgICByZXR1cm4gbV9wbHVnaW5JbmZvLmRlc2M7CiB9CiAKIHVuc2lnbmVkIERPTVBs
dWdpbjo6bGVuZ3RoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGx1Z2luSW5mbygpLm1pbWVzLnNp
emUoKTsKLX0KLQotUGx1Z2luSW5mbyBET01QbHVnaW46OnBsdWdpbkluZm8oKSBjb25zdAotewot
ICAgIHJldHVybiBtX3BsdWdpbkRhdGEtPndlYlZpc2libGVQbHVnaW5zKClbbV9pbmRleF07Cisg
ICAgcmV0dXJuIG1fcGx1Z2luSW5mby5taW1lcy5zaXplKCk7CiB9CiAKIFBhc3NSZWZQdHI8RE9N
TWltZVR5cGU+IERPTVBsdWdpbjo6aXRlbSh1bnNpZ25lZCBpbmRleCkKIHsKLSAgICBpZiAoaW5k
ZXggPj0gcGx1Z2luSW5mbygpLm1pbWVzLnNpemUoKSkKKyAgICBpZiAoaW5kZXggPj0gbV9wbHVn
aW5JbmZvLm1pbWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBNaW1lQ2xhc3NJ
bmZvIG1pbWUgPSBwbHVnaW5JbmZvKCkubWltZXNbaW5kZXhdOworICAgIE1pbWVDbGFzc0luZm8g
bWltZSA9IG1fcGx1Z2luSW5mby5taW1lc1tpbmRleF07CiAKICAgICBWZWN0b3I8TWltZUNsYXNz
SW5mbz4gbWltZXM7CiAgICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7CisgICAg
VmVjdG9yPFBsdWdpbkluZm8+IHBsdWdpbnMgPSBtX3BsdWdpbkRhdGEtPndlYlZpc2libGVQbHVn
aW5zKCk7CiAgICAgbV9wbHVnaW5EYXRhLT5nZXRXZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5JbmRp
Y2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1pbWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtaW1lc1tpXSA9PSBtaW1lICYm
IG1pbWVQbHVnaW5JbmRpY2VzW2ldID09IG1faW5kZXgpCisgICAgICAgIGlmIChtaW1lc1tpXSA9
PSBtaW1lICYmIHBsdWdpbnNbbWltZVBsdWdpbkluZGljZXNbaV1dID09IG1fcGx1Z2luSW5mbykK
ICAgICAgICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQo
KSwgbV9mcmFtZSwgaSk7CiAgICAgfQogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9N
UGx1Z2luLmgKaW5kZXggZTMyOWY2ZTZmZThlZGU0NTFlYjMxYTI4MmNmOGFjMGNmYjMwYmI0My4u
Y2MyZGE0ZmY1YjQ3NTJhYmVkZWM3NGY5ZjRkNDVjNWNjNDY0ODZmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbi5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFBsdWdpbkRhdGE7CiAKIGNs
YXNzIERPTVBsdWdpbiA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBSZWZDb3VudGVk
PERPTVBsdWdpbj4sIHB1YmxpYyBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8RE9NUGx1Z2luPiBjcmVhdGUoUGx1Z2luRGF0YSogcGx1Z2luRGF0YSwg
RnJhbWUqIGZyYW1lLCB1bnNpZ25lZCBpbmRleCkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01Q
bHVnaW4ocGx1Z2luRGF0YSwgZnJhbWUsIGluZGV4KSk7IH0KKyAgICBzdGF0aWMgUmVmPERPTVBs
dWdpbj4gY3JlYXRlKFBsdWdpbkRhdGEqIHBsdWdpbkRhdGEsIEZyYW1lKiBmcmFtZSwgUGx1Z2lu
SW5mbyBwbHVnaW5JbmZvKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERPTVBsdWdpbihwbHVnaW5E
YXRhLCBmcmFtZSwgcGx1Z2luSW5mbykpOyB9CiAgICAgfkRPTVBsdWdpbigpOwogCiAgICAgU3Ry
aW5nIG5hbWUoKSBjb25zdDsKQEAgLTQ3LDExICs0Nyw5IEBAIHB1YmxpYzoKICAgICBQYXNzUmVm
UHRyPERPTU1pbWVUeXBlPiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5h
bWUpOwogCiBwcml2YXRlOgotICAgIFBsdWdpbkluZm8gcGx1Z2luSW5mbygpIGNvbnN0OwotCi0g
ICAgRE9NUGx1Z2luKFBsdWdpbkRhdGEqLCBGcmFtZSosIHVuc2lnbmVkIGluZGV4KTsKKyAgICBE
T01QbHVnaW4oUGx1Z2luRGF0YSosIEZyYW1lKiwgUGx1Z2luSW5mbyk7CiAgICAgUmVmUHRyPFBs
dWdpbkRhdGE+IG1fcGx1Z2luRGF0YTsKLSAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIFBsdWdp
bkluZm8gbV9wbHVnaW5JbmZvOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAppbmRleCA2YmY4YmQ0NjAwNDRiZGJl
MzQzNzVkNzEzZWZjMmU2MmMzOGM0MjU2Li43ODRlZjcxZDVkNjI3NTY4OTM3MzY0YzljNDlmOTU4
OGZhZDI3NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcApA
QCAtNjEsNyArNjEsNyBAQCBQYXNzUmVmUHRyPERPTVBsdWdpbj4gRE9NUGx1Z2luQXJyYXk6Oml0
ZW0odW5zaWduZWQgaW5kZXgpCiAgICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5z
ID0gZGF0YS0+d2ViVmlzaWJsZVBsdWdpbnMoKTsKICAgICBpZiAoaW5kZXggPj0gcGx1Z2lucy5z
aXplKCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0ZShk
YXRhLCBtX2ZyYW1lLCBpbmRleCk7CisgICAgcmV0dXJuIERPTVBsdWdpbjo6Y3JlYXRlKGRhdGEs
IG1fZnJhbWUsIHBsdWdpbnNbaW5kZXhdKTsKIH0KIAogYm9vbCBET01QbHVnaW5BcnJheTo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtODYs
NyArODYsNyBAQCBQYXNzUmVmUHRyPERPTVBsdWdpbj4gRE9NUGx1Z2luQXJyYXk6Om5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZQogICAgIGNvbnN0IFZlY3RvcjxQbHVn
aW5JbmZvPiYgcGx1Z2lucyA9IGRhdGEtPndlYlZpc2libGVQbHVnaW5zKCk7CiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHBsdWdpbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKHBs
dWdpbnNbaV0ubmFtZSA9PSBwcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gRE9NUGx1
Z2luOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgaSk7CisgICAgICAgICAgICByZXR1cm4gRE9NUGx1
Z2luOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgcGx1Z2luc1tpXSk7CiAgICAgfQogICAgIHJldHVy
biAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAppbmRleCBlMDdjZDE5NjAyYWQx
NmJhOTVhYjE1NjQ2ZmEwMzMwOGY2NjkxMjZiLi4wOGY4ZDk3ODJmZDAxOTlmN2JhM2E2NDE4MDAw
YmQ2OTU5YTVjNzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaApAQCAtNzMsNiAr
NzMsMTUgQEAgc3RydWN0IFBsdWdpbkluZm8gewogI2VuZGlmCiB9OwogCitpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KFBsdWdpbkluZm8gYSwgUGx1Z2luSW5mbyBiKQoreworICAgIGJvb2wgcmVzdWx0
ID0gYS5uYW1lID09IGIubmFtZSAmJiBhLmZpbGUgPT0gYi5maWxlICYmIGEuZGVzYyA9PSBiLmRl
c2MgJiYgYS5taW1lcyA9PSBiLm1pbWVzICYmIGEuaXNBcHBsaWNhdGlvblBsdWdpbiA9PSBiLmlz
QXBwbGljYXRpb25QbHVnaW4gJiYgYS5jbGllbnRMb2FkUG9saWN5ID09IGIuY2xpZW50TG9hZFBv
bGljeTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmVzdWx0ID0gcmVzdWx0ICYmIGEuYnVuZGxl
SWRlbnRpZmllciA9PSBiLmJ1bmRsZUlkZW50aWZpZXIgJiYgYS52ZXJzaW9uU3RyaW5nID09IGIu
dmVyc2lvblN0cmluZzsKKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8vIEZJWE1F
OiBtZXJnZSB3aXRoIFBsdWdpbkRhdGFiYXNlIGluIHRoZSBmdXR1cmUKIGNsYXNzIFBsdWdpbkRh
dGEgOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5EYXRhPiB7CiBwdWJsaWM6Cg==
</data>
<flag name="review"
          id="280052"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>