<?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>76458</bug_id>
          
          <creation_ts>2012-01-17 08:22:04 -0800</creation_ts>
          <short_desc>SpaceSplitString: Share equivalent string piece vectors.</short_desc>
          <delta_ts>2012-01-17 12:57:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>537115</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-17 08:22:04 -0800</bug_when>
    <thetext>SpaceSplitString is used primarily to store element class names. We can save a bunch of memory by sharing the SpaceSplitStringData for SpaceSplitStrings that are based on the same strings. (This also means we only need to split each string once.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537177</commentid>
    <comment_count>1</comment_count>
      <attachid>122781</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-17 10:09:23 -0800</bug_when>
    <thetext>Created attachment 122781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537178</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 10:11:25 -0800</bug_when>
    <thetext>Attachment 122781 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/dom/SpaceSplitString.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/dom/SpaceSplitString.h:72:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537183</commentid>
    <comment_count>3</comment_count>
      <attachid>122781</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-17 10:23:22 -0800</bug_when>
    <thetext>Comment on attachment 122781
Patch

Attachment 122781 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11268245</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537190</commentid>
    <comment_count>4</comment_count>
      <attachid>122781</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-01-17 10:34:18 -0800</bug_when>
    <thetext>Comment on attachment 122781
Patch

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

&gt; Source/WebCore/dom/SpaceSplitString.cpp:141
&gt; +static void deleteFromSharedDataMap(SpaceSplitStringData* data)
&gt; +{
&gt; +    SpaceSplitStringDataMap&amp; map = sharedDataMap();
&gt; +    SpaceSplitStringDataMap::iterator end = map.end();
&gt; +    for (SpaceSplitStringDataMap::iterator it = map.begin(); it != end; ++it) {
&gt; +        if (it-&gt;second.get() == data) {
&gt; +            map.remove(it);
&gt; +            return;
&gt; +        }
&gt; +    }
&gt; +}

This looks like O(n^2) for SpaceSplitStringData&apos;s.

&gt; Source/WebCore/dom/SpaceSplitString.cpp:147
&gt; +    // If this is the last reference to &apos;data&apos;, remove it from cache.
&gt; +    if (data &amp;&amp; data-&gt;refCount() == 2)
&gt; +        deleteFromSharedDataMap(data);

Testing for ref count 2 is strange. I think it would be cleaner to use plain pointers in the global cache and simply remove the cache entry from SpaceSplitStringData destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537239</commentid>
    <comment_count>5</comment_count>
      <attachid>122790</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-17 11:41:17 -0800</bug_when>
    <thetext>Created attachment 122790
Patch v2

Anttified patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537242</commentid>
    <comment_count>6</comment_count>
      <attachid>122791</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-17 11:42:29 -0800</bug_when>
    <thetext>Created attachment 122791
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537258</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 11:54:07 -0800</bug_when>
    <thetext>Attachment 122791 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/dom/SpaceSplitString.h:30:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537262</commentid>
    <comment_count>8</comment_count>
      <attachid>122791</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-01-17 12:01:36 -0800</bug_when>
    <thetext>Comment on attachment 122791
Patch v2

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

looks good, r=me

&gt; Source/WebCore/dom/SpaceSplitString.cpp:161
&gt; +PassRefPtr&lt;SpaceSplitStringData&gt; SpaceSplitStringData::create(const SpaceSplitStringData&amp; other)

Maybe createUnique() or similar?

&gt; Source/WebCore/dom/SpaceSplitString.cpp:178
&gt; +    // Note that we don&apos;t copy m_string to indicate to the destructor that there&apos;s nothing
&gt; +    // to be removed from the sharedDataMap().

You might want to rename m_string to m_stringKey or similar to indicate its purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537277</commentid>
    <comment_count>9</comment_count>
      <attachid>122791</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-17 12:16:06 -0800</bug_when>
    <thetext>Comment on attachment 122791
Patch v2

Attachment 122791 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11107688</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537307</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-01-17 12:57:37 -0800</bug_when>
    <thetext>Committed r105186: &lt;http://trac.webkit.org/changeset/105186&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122781</attachid>
            <date>2012-01-17 10:09:23 -0800</date>
            <delta_ts>2012-01-17 11:41:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76458.diff</filename>
            <type>text/plain</type>
            <size>8835</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZWZlOGQ3Li5iZjEyNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMg
QEAKKzIwMTItMDEtMTcgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmc6IFNoYXJlIGVxdWl2YWxlbnQgc3RyaW5nIHBpZWNl
IHZlY3RvcnMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc2NDU4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU3BhY2VTcGxpdFN0
cmluZ0RhdGEgcmVmZXJlbmNlLWNvdW50ZWQgYW5kIGNhY2hlIHRoZW0gaW4gYSBoYXNobWFwIHRv
CisgICAgICAgIHJlZHVjZSBtZW1vcnkgdXNhZ2UgYW5kIGF2b2lkIHJlZHVuZGFudCBzdHJpbmcg
c3BsaXR0aW5nIHdvcmsuCisgICAgICAgIFRoaXMgcmVkdWNlcyBtZW1vcnkgY29uc3VtcHRpb24g
YnkgNjIwIGtCIChvbiA2NC1iaXQpIHdoZW4gdmlld2luZyB0aGUgZnVsbAorICAgICAgICBIVE1M
NSBzcGVjIGF0IDxodHRwOi8vd2hhdHdnLm9yZy9jPgorCisgICAgICAgICogZG9tL1NwYWNlU3Bs
aXRTdHJpbmcuaDoKKyAgICAgICAgKiBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpzaGFyZWREYXRhTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRT
dHJpbmdEYXRhOjpjcmVhdGVWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0
cmluZzo6U3BhY2VTcGxpdFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3Ry
aW5nOjpzZXQpOgorCisgICAgICAgICAgICBNb3ZlIGNhc2UgZm9sZGluZyBmcm9tIGNyZWF0ZVZl
Y3RvcigpIHRvIHNldCgpLgorICAgICAgICAgICAgQWRkIGEgaGFzaCBtYXAgZm9yIGNhY2hpbmcg
QXRvbWljU3RyaW5nIC0+IFNwYWNlU3BsaXRTdHJpbmdEYXRhLgorCisgICAgICAgIChXZWJDb3Jl
OjpTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y29udGFpbnNBbGwpOgorCisgICAgICAgICAgICBBZGRl
ZCBncmF0dWl0b3VzIGZhc3QgcGF0aCBmb3IgY29udGFpbnNBbGwodGhpcykuCisKKyAgICAgICAg
KFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6
U3BhY2VTcGxpdFN0cmluZ0RhdGE6OnJlbW92ZSk6CisKKyAgICAgICAgICAgIEFzc2VydCB0aGF0
IGFkZCgpIGFuZCByZW1vdmUoKSBhcmUgb25seSB1c2VkIG9uIHVuaXF1ZSBTcGFjZVNwbGl0U3Ry
aW5nRGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0cmluZzo6ZW5zdXJlVW5p
cXVlKToKKworICAgICAgICAgICAgQWRkZWQsIGRldGFjaGVzIGZyb20gdGhlIHNoYXJlZCBTcGFj
ZVNwbGl0U3RyaW5nRGF0YSBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNl
U3BsaXRTdHJpbmc6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5nOjpy
ZW1vdmUpOgorCisgICAgICAgICAgICBDYWxsIGVuc3VyZVVuaXF1ZSgpIHRvIHBvdGVudGlhbGx5
IGRldGFjaCBmcm9tIGEgc2hhcmVkIFNwYWNlU3BsaXRTdHJpbmdEYXRhCisgICAgICAgICAgICBi
ZWZvcmUgbWFraW5nIG1vZGlmaWNhdGlvbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3Bs
aXRTdHJpbmdEYXRhOjpTcGFjZVNwbGl0U3RyaW5nRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpk
ZWxldGVGcm9tU2hhcmVkRGF0YU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpkZWxldGVGcm9tU2hh
cmVkRGF0YU1hcElmTGFzdFJlZik6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5n
Ojp+U3BhY2VTcGxpdFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5n
OjpjbGVhcik6CisKKyAgICAgICAgICAgIE1ha2Ugc3VyZSB0aGUgU3BhY2VTcGxpdFN0cmluZ0Rh
dGEgaXMgcHVyZ2VkIGZyb20gY2FjaGUgd2hlbiB3ZSBsb3NlIHRoZQorICAgICAgICAgICAgbGFz
dCByZWZlcmVuY2UuCisKIDIwMTItMDEtMTYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgog
CiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgcjEwNTA4Ni4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNw
bGl0U3RyaW5nLmNwcAppbmRleCA3OGI4NTlkLi4xMWRhMDhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NwYWNlU3BsaXRTdHJpbmcuY3BwCkBAIC0yMyw2ICsyMyw4IEBACiAKICNpbmNsdWRlICJIVE1M
UGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7
CkBAIC00MywxMyArNDUsOCBAQCBzdGF0aWMgYm9vbCBoYXNOb25BU0NJSU9yVXBwZXIoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIGhhc1VwcGVyIHx8IChvcmVkICYgfjB4N0YpOwog
fQogCi12b2lkIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGVWZWN0b3IoY29uc3QgU3RyaW5n
JiBpbnB1dFN0cmluZywgYm9vbCBzaG91bGRGb2xkQ2FzZSkKK3ZvaWQgU3BhY2VTcGxpdFN0cmlu
Z0RhdGE6OmNyZWF0ZVZlY3Rvcihjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBTdHJpbmcg
c3RyaW5nKGlucHV0U3RyaW5nKTsKLQotICAgIGlmIChzaG91bGRGb2xkQ2FzZSAmJiBoYXNOb25B
U0NJSU9yVXBwZXIoaW5wdXRTdHJpbmcpKQotICAgICAgICBzdHJpbmcgPSBpbnB1dFN0cmluZy5m
b2xkQ2FzZSgpOwotCiAgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcuY2hhcmFj
dGVycygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKICAgICB1bnNp
Z25lZCBzdGFydCA9IDA7CkBAIC03MCw2ICs2Nyw5IEBAIHZvaWQgU3BhY2VTcGxpdFN0cmluZ0Rh
dGE6OmNyZWF0ZVZlY3Rvcihjb25zdCBTdHJpbmcmIGlucHV0U3RyaW5nLCBib29sIHNob3VsZEZv
CiAKIGJvb2wgU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNvbnRhaW5zQWxsKFNwYWNlU3BsaXRTdHJp
bmdEYXRhJiBvdGhlcikKIHsKKyAgICBpZiAodGhpcyA9PSAmb3RoZXIpCisgICAgICAgIHJldHVy
biB0cnVlOworCiAgICAgc2l6ZV90IHRoaXNTaXplID0gbV92ZWN0b3Iuc2l6ZSgpOwogICAgIHNp
emVfdCBvdGhlclNpemUgPSBvdGhlci5tX3ZlY3Rvci5zaXplKCk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBvdGhlclNpemU7ICsraSkgewpAQCAtODcsNiArODcsNyBAQCBib29sIFNwYWNl
U3BsaXRTdHJpbmdEYXRhOjpjb250YWluc0FsbChTcGFjZVNwbGl0U3RyaW5nRGF0YSYgb3RoZXIp
CiAKIHZvaWQgU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmluZykKIHsKKyAgICBBU1NFUlQoaGFzT25lUmVmKCkpOwogICAgIGlmIChjb250YWlucyhzdHJp
bmcpKQogICAgICAgICByZXR1cm47CiAKQEAgLTk1LDYgKzk2LDcgQEAgdm9pZCBTcGFjZVNwbGl0
U3RyaW5nRGF0YTo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogCiB2b2lkIFNwYWNl
U3BsaXRTdHJpbmdEYXRhOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7Cisg
ICAgQVNTRVJUKGhhc09uZVJlZigpKTsKICAgICBzaXplX3QgcG9zaXRpb24gPSAwOwogICAgIHdo
aWxlIChwb3NpdGlvbiA8IG1fdmVjdG9yLnNpemUoKSkgewogICAgICAgICBpZiAobV92ZWN0b3Jb
cG9zaXRpb25dID09IHN0cmluZykKQEAgLTEwNiwxNCArMTA4LDczIEBAIHZvaWQgU3BhY2VTcGxp
dFN0cmluZ0RhdGE6OnJlbW92ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykKIAogdm9pZCBT
cGFjZVNwbGl0U3RyaW5nOjphZGQoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CisgICAg
ZW5zdXJlVW5pcXVlKCk7CiAgICAgaWYgKG1fZGF0YSkKICAgICAgICAgbV9kYXRhLT5hZGQoc3Ry
aW5nKTsKIH0KIAogdm9pZCBTcGFjZVNwbGl0U3RyaW5nOjpyZW1vdmUoY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHJpbmcpCiB7CisgICAgZW5zdXJlVW5pcXVlKCk7CiAgICAgaWYgKG1fZGF0YSkKICAg
ICAgICAgbV9kYXRhLT5yZW1vdmUoc3RyaW5nKTsKIH0KIAordHlwZWRlZiBIYXNoTWFwPEF0b21p
Y1N0cmluZywgUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiA+IFNwYWNlU3BsaXRTdHJpbmdE
YXRhTWFwOworCitzdGF0aWMgU3BhY2VTcGxpdFN0cmluZ0RhdGFNYXAmIHNoYXJlZERhdGFNYXAo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3BhY2VTcGxpdFN0cmluZ0RhdGFNYXAsIG1h
cCwgKCkpOworICAgIHJldHVybiBtYXA7Cit9CisKK3N0YXRpYyB2b2lkIGRlbGV0ZUZyb21TaGFy
ZWREYXRhTWFwKFNwYWNlU3BsaXRTdHJpbmdEYXRhKiBkYXRhKQoreworICAgIFNwYWNlU3BsaXRT
dHJpbmdEYXRhTWFwJiBtYXAgPSBzaGFyZWREYXRhTWFwKCk7CisgICAgU3BhY2VTcGxpdFN0cmlu
Z0RhdGFNYXA6Oml0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKKyAgICBmb3IgKFNwYWNlU3BsaXRT
dHJpbmdEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKKyAgICAgICAgaWYgKGl0LT5zZWNvbmQuZ2V0KCkgPT0gZGF0YSkgeworICAgICAgICAgICAg
bWFwLnJlbW92ZShpdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkZWxldGVGcm9tU2hhcmVkRGF0YU1hcElmTGFzdFJlZihT
cGFjZVNwbGl0U3RyaW5nRGF0YSogZGF0YSkKK3sKKyAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byAnZGF0YScsIHJlbW92ZSBpdCBmcm9tIGNhY2hlLgorICAgIGlmIChkYXRh
ICYmIGRhdGEtPnJlZkNvdW50KCkgPT0gMikKKyAgICAgICAgZGVsZXRlRnJvbVNoYXJlZERhdGFN
YXAoZGF0YSk7Cit9CisKK3ZvaWQgU3BhY2VTcGxpdFN0cmluZzo6c2V0KGNvbnN0IEF0b21pY1N0
cmluZyYgaW5wdXRTdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENhc2UpCit7CisgICAgaWYgKGlucHV0
U3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgIGNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBTdHJpbmcgc3RyaW5nKGlucHV0U3RyaW5nKTsKKyAgICBpZiAoc2hvdWxkRm9s
ZENhc2UgJiYgaGFzTm9uQVNDSUlPclVwcGVyKHN0cmluZykpCisgICAgICAgIHN0cmluZyA9IHN0
cmluZy5mb2xkQ2FzZSgpOworCisgICAgUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiYgZGF0
YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5maXJzdC0+c2Vjb25kOworICAgIGlm
ICghZGF0YSkKKyAgICAgICAgZGF0YSA9IGFkb3B0UmVmKG5ldyBTcGFjZVNwbGl0U3RyaW5nRGF0
YShzdHJpbmcpKTsKKworICAgIGRlbGV0ZUZyb21TaGFyZWREYXRhTWFwSWZMYXN0UmVmKG1fZGF0
YS5nZXQoKSk7CisgICAgbV9kYXRhID0gZGF0YTsKK30KKworU3BhY2VTcGxpdFN0cmluZzo6flNw
YWNlU3BsaXRTdHJpbmcoKQoreworICAgIGRlbGV0ZUZyb21TaGFyZWREYXRhTWFwSWZMYXN0UmVm
KG1fZGF0YS5nZXQoKSk7Cit9CisKK3ZvaWQgU3BhY2VTcGxpdFN0cmluZzo6Y2xlYXIoKQorewor
ICAgIGRlbGV0ZUZyb21TaGFyZWREYXRhTWFwSWZMYXN0UmVmKG1fZGF0YS5nZXQoKSk7CisgICAg
bV9kYXRhLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU3BhY2VTcGxpdFN0cmluZy5oCmluZGV4IGJkMzhlODQuLmI3ZjUyZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuaApAQCAtMjEsMTkgKzIxLDIyIEBACiAjaWZuZGVmIFNw
YWNlU3BsaXRTdHJpbmdfaAogI2RlZmluZSBTcGFjZVNwbGl0U3RyaW5nX2gKIAotI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBT
cGFjZVNwbGl0U3RyaW5nRGF0YSB7Ci0gICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNwYWNl
U3BsaXRTdHJpbmdEYXRhKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgY2xhc3MgU3Bh
Y2VTcGxpdFN0cmluZ0RhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTcGFjZVNwbGl0U3RyaW5nRGF0
YT4gewogICAgIHB1YmxpYzoKLSAgICAgICAgU3BhY2VTcGxpdFN0cmluZ0RhdGEoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENhc2UpCisgICAgICAgIFNwYWNlU3BsaXRTdHJp
bmdEYXRhKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQorICAgICAgICB7CisgICAgICAgICAg
ICBjcmVhdGVWZWN0b3Ioc3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIFNwYWNlU3BsaXRT
dHJpbmdEYXRhKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmdEYXRhJiBvdGhlcikKKyAgICAgICAgICAg
IDogbV92ZWN0b3Iob3RoZXIubV92ZWN0b3IpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNyZWF0
ZVZlY3RvcihzdHJpbmcsIHNob3VsZEZvbGRDYXNlKTsKICAgICAgICAgfQogCiAgICAgICAgIGJv
b2wgY29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCkBAIC01NSw3ICs1OCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBvcGVyYXRv
cltdKHNpemVfdCBpKSB7IEFTU0VSVChpIDwgc2l6ZSgpKTsgcmV0dXJuIG1fdmVjdG9yW2ldOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGNyZWF0ZVZlY3Rvcihjb25zdCBTdHJpbmcm
LCBib29sIHNob3VsZEZvbGRDYXNlKTsKKyAgICAgICAgdm9pZCBjcmVhdGVWZWN0b3IoY29uc3Qg
U3RyaW5nJik7CiAKICAgICAgICAgVmVjdG9yPEF0b21pY1N0cmluZywgMj4gbV92ZWN0b3I7CiAg
ICAgfTsKQEAgLTYzLDEwICs2NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
U3BhY2VTcGxpdFN0cmluZyB7CiAgICAgcHVibGljOgogICAgICAgICBTcGFjZVNwbGl0U3RyaW5n
KCkgeyB9Ci0gICAgICAgIFNwYWNlU3BsaXRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJv
b2wgc2hvdWxkRm9sZENhc2UpIDogbV9kYXRhKGFkb3B0UHRyKG5ldyBTcGFjZVNwbGl0U3RyaW5n
RGF0YShzdHJpbmcsIHNob3VsZEZvbGRDYXNlKSkpIHsgfQorICAgICAgICBTcGFjZVNwbGl0U3Ry
aW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nLCBib29sIHNob3VsZEZvbGRDYXNlKSB7IHNl
dChzdHJpbmcsIHNob3VsZEZvbGRDYXNlKTsgfQorICAgICAgICB+U3BhY2VTcGxpdFN0cmluZygp
OwogCi0gICAgICAgIHZvaWQgc2V0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIHNob3VsZEZv
bGRDYXNlKSB7IG1fZGF0YSA9IGFkb3B0UHRyKG5ldyBTcGFjZVNwbGl0U3RyaW5nRGF0YShzdHJp
bmcsIHNob3VsZEZvbGRDYXNlKSk7IH0KLSAgICAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmNs
ZWFyKCk7IH0KKyAgICAgICAgdm9pZCBzZXQoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcsIGJv
b2wgc2hvdWxkRm9sZENhc2UpOworICAgICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICAgICAgYm9v
bCBjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9k
YXRhICYmIG1fZGF0YS0+Y29udGFpbnMoc3RyaW5nKTsgfQogICAgICAgICBib29sIGNvbnRhaW5z
QWxsKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5hbWVzKSBjb25zdCB7IHJldHVybiAhbmFtZXMu
bV9kYXRhIHx8IChtX2RhdGEgJiYgbV9kYXRhLT5jb250YWluc0FsbCgqbmFtZXMubV9kYXRhKSk7
IH0KQEAgLTc4LDcgKzgyLDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IEFTU0VSVChpIDwgc2l6
ZSgpKTsgcmV0dXJuICgqbV9kYXRhKVtpXTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3du
UHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBtX2RhdGE7CisgICAgICAgIHZvaWQgZW5zdXJlVW5p
cXVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fZGF0YSAmJiAhbV9kYXRhLT5oYXNP
bmVSZWYoKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxTcGFjZVNwbGl0U3RyaW5nRGF0YT4g
Y29weSA9IGFkb3B0UmVmKG5ldyBTcGFjZVNwbGl0U3RyaW5nRGF0YSgqbV9kYXRhKSk7CisgICAg
ICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBtX2RhdGEgPSBjb3B5LnJlbGVh
c2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxTcGFjZVNw
bGl0U3RyaW5nRGF0YT4gbV9kYXRhOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="123662"
          type_id="1"
          status="-"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="123663"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122790</attachid>
            <date>2012-01-17 11:41:17 -0800</date>
            <delta_ts>2012-01-17 11:42:29 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-76458-v2.diff</filename>
            <type>text/plain</type>
            <size>8893</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZWZlOGQ3Li40ZDMzMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDEtMTcgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmc6IFNoYXJlIGVxdWl2YWxlbnQgc3RyaW5nIHBpZWNl
IHZlY3RvcnMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc2NDU4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU3BhY2VTcGxpdFN0
cmluZ0RhdGEgcmVmLWNvdW50ZWQgYW5kIGNhY2hlIHRoZW0gaW4gYSBoYXNobWFwIHRvIHJlZHVj
ZSBtZW1vcnkKKyAgICAgICAgdXNhZ2UgYW5kIGF2b2lkIHJlZHVuZGFudCBzdHJpbmcgc3BsaXR0
aW5nIHdvcmsuICBUaGlzIHJlZHVjZXMgbWVtb3J5IGNvbnN1bXB0aW9uCisgICAgICAgIGJ5IDYx
OCBrQiAob24gNjQtYml0KSB3aGVuIHZpZXdpbmcgdGhlIGZ1bGwgSFRNTDUgc3BlYyBhdCA8aHR0
cDovL3doYXR3Zy5vcmcvYz4KKworICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmg6CisK
KyAgICAgICAgICAgIEFkZCB0aGUgc291cmNlIHN0cmluZyB0byBTcGFjZVNwbGl0U3RyaW5nRGF0
YSBzbyB3ZSBoYXZlIGEga2V5IGZvciB1bmNhY2hpbmcKKyAgICAgICAgICAgIGluIHRoZSBkZXN0
cnVjdG9yLiBBbHNvIGJ1bXBlZCB0aGUgdmVjdG9yJ3MgaW5saW5lIHNpemUgZnJvbSAyIHRvIDQu
CisKKyAgICAgICAgKiBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWREYXRhTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRh
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0cmluZ0RhdGE6OlNwYWNl
U3BsaXRTdHJpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmc6OlNw
YWNlU3BsaXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0cmluZzo6c2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGVWZWN0b3Ip
OgorCisgICAgICAgICAgICBBZGRlZCBjcmVhdGUoKSBtZXRob2RzIGZvciBTcGFjZVNwbGl0U3Ry
aW5nRGF0YS4gTW92ZWQgY2FzZSBmb2xkaW5nIGZyb20KKyAgICAgICAgICAgIGNyZWF0ZVZlY3Rv
cigpIHRvIGNyZWF0ZShBdG9taWNTdHJpbmcpLiBBZGRlZCBhIGhhc2ggbWFwIGZvciBjYWNoaW5n
CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgLT4gU3BhY2VTcGxpdFN0cmluZ0RhdGEuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjp+U3BhY2VTcGxpdFN0cmluZ0Rh
dGEpOgorCisgICAgICAgICAgICBSZW1vdmUgdGhlIFNwYWNlU3BsaXRTdHJpbmdEYXRhIGZyb20g
dGhlIHNoYXJlZERhdGFNYXAoKS4KKworICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmc6OmVuc3VyZVVuaXF1ZSk6CisK
KyAgICAgICAgICAgIEFkZGVkLCBkZXRhY2hlcyBmcm9tIHRoZSBzaGFyZWQgU3BhY2VTcGxpdFN0
cmluZ0RhdGEgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3Ry
aW5nRGF0YTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpy
ZW1vdmUpOgorCisgICAgICAgICAgICBBc3NlcnQgdGhhdCBhZGQoKSBhbmQgcmVtb3ZlKCkgYXJl
IG9ubHkgdXNlZCBvbiB1bmlxdWUgU3BhY2VTcGxpdFN0cmluZ0RhdGEuCisKKyAgICAgICAgKFdl
YkNvcmU6OlNwYWNlU3BsaXRTdHJpbmc6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNw
bGl0U3RyaW5nOjpyZW1vdmUpOgorCisgICAgICAgICAgICBDYWxsIGVuc3VyZVVuaXF1ZSgpIHRv
IHBvdGVudGlhbGx5IGRldGFjaCBmcm9tIGEgc2hhcmVkIFNwYWNlU3BsaXRTdHJpbmdEYXRhCisg
ICAgICAgICAgICBiZWZvcmUgbWFraW5nIG1vZGlmaWNhdGlvbnMuCisKKyAgICAgICAgKiBkb20v
U3BhY2VTcGxpdFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5n
RGF0YTo6Y29udGFpbnNBbGwpOgorCisgICAgICAgICAgICBBZGRlZCBncmF0dWl0b3VzIGZhc3Qg
cGF0aCBmb3IgY29udGFpbnNBbGwoKnRoaXMpLgorCiAyMDEyLTAxLTE2ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIHIxMDUwODYuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKaW5kZXggNzhiODU5ZC4uOGVmZWE4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApAQCAtMjMsNiArMjMsOCBAQAog
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwpAQCAtNDMsMTMgKzQ1LDggQEAgc3RhdGljIGJvb2wgaGFzTm9uQVND
SUlPclVwcGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBoYXNVcHBlciB8fCAo
b3JlZCAmIH4weDdGKTsKIH0KIAotdm9pZCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlVmVj
dG9yKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENhc2UpCit2b2lk
IFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGVWZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7Ci0gICAgU3RyaW5nIHN0cmluZyhpbnB1dFN0cmluZyk7Ci0KLSAgICBpZiAoc2hvdWxkRm9s
ZENhc2UgJiYgaGFzTm9uQVNDSUlPclVwcGVyKGlucHV0U3RyaW5nKSkKLSAgICAgICAgc3RyaW5n
ID0gaW5wdXRTdHJpbmcuZm9sZENhc2UoKTsKLQogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
ID0gc3RyaW5nLmNoYXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoKCk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwpAQCAtNzAsNiArNjcsOSBAQCB2b2lkIFNw
YWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGVWZWN0b3IoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmlu
ZywgYm9vbCBzaG91bGRGbwogCiBib29sIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjb250YWluc0Fs
bChTcGFjZVNwbGl0U3RyaW5nRGF0YSYgb3RoZXIpCiB7CisgICAgaWYgKHRoaXMgPT0gJm90aGVy
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHNpemVfdCB0aGlzU2l6ZSA9IG1fdmVjdG9y
LnNpemUoKTsKICAgICBzaXplX3Qgb3RoZXJTaXplID0gb3RoZXIubV92ZWN0b3Iuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXJTaXplOyArK2kpIHsKQEAgLTg3LDYgKzg3
LDcgQEAgYm9vbCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y29udGFpbnNBbGwoU3BhY2VTcGxpdFN0
cmluZ0RhdGEmIG90aGVyKQogCiB2b2lkIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjphZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CisgICAgQVNTRVJUKGhhc09uZVJlZigpKTsKICAgICBp
ZiAoY29udGFpbnMoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05NSw2ICs5Niw3IEBA
IHZvaWQgU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIHN0cmlu
ZykKIAogdm9pZCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RyaW5nKQogeworICAgIEFTU0VSVChoYXNPbmVSZWYoKSk7CiAgICAgc2l6ZV90IHBvc2l0
aW9uID0gMDsKICAgICB3aGlsZSAocG9zaXRpb24gPCBtX3ZlY3Rvci5zaXplKCkpIHsKICAgICAg
ICAgaWYgKG1fdmVjdG9yW3Bvc2l0aW9uXSA9PSBzdHJpbmcpCkBAIC0xMDYsMTQgKzEwOCw3NCBA
QCB2b2lkIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBz
dHJpbmcpCiAKIHZvaWQgU3BhY2VTcGxpdFN0cmluZzo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
c3RyaW5nKQogeworICAgIGVuc3VyZVVuaXF1ZSgpOwogICAgIGlmIChtX2RhdGEpCiAgICAgICAg
IG1fZGF0YS0+YWRkKHN0cmluZyk7CiB9CiAKIHZvaWQgU3BhY2VTcGxpdFN0cmluZzo6cmVtb3Zl
KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogeworICAgIGVuc3VyZVVuaXF1ZSgpOwogICAg
IGlmIChtX2RhdGEpCiAgICAgICAgIG1fZGF0YS0+cmVtb3ZlKHN0cmluZyk7CiB9CiAKK3R5cGVk
ZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFNwYWNlU3BsaXRTdHJpbmdEYXRhKj4gU3BhY2VTcGxp
dFN0cmluZ0RhdGFNYXA7CisKK3N0YXRpYyBTcGFjZVNwbGl0U3RyaW5nRGF0YU1hcCYgc2hhcmVk
RGF0YU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTcGFjZVNwbGl0U3RyaW5nRGF0
YU1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKwordm9pZCBTcGFjZVNwbGl0U3Ry
aW5nOjpzZXQoY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFN0cmluZywgYm9vbCBzaG91bGRGb2xk
Q2FzZSkKK3sKKyAgICBpZiAoaW5wdXRTdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgY2xlYXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBzdHJpbmcoaW5wdXRTdHJp
bmcpOworICAgIGlmIChzaG91bGRGb2xkQ2FzZSAmJiBoYXNOb25BU0NJSU9yVXBwZXIoc3RyaW5n
KSkKKyAgICAgICAgc3RyaW5nID0gc3RyaW5nLmZvbGRDYXNlKCk7CisKKyAgICBtX2RhdGEgPSBT
cGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlKHN0cmluZyk7Cit9CisKK1NwYWNlU3BsaXRTdHJp
bmdEYXRhOjp+U3BhY2VTcGxpdFN0cmluZ0RhdGEoKQoreworICAgIGlmICghbV9zdHJpbmcuaXNO
dWxsKCkpCisgICAgICAgIHNoYXJlZERhdGFNYXAoKS5yZW1vdmUobV9zdHJpbmcpOworfQorCitQ
YXNzUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQoreworICAgIFNwYWNlU3BsaXRTdHJpbmdE
YXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5maXJzdC0+c2Vjb25k
OworICAgIGlmICghZGF0YSkgeworICAgICAgICBkYXRhID0gbmV3IFNwYWNlU3BsaXRTdHJpbmdE
YXRhKHN0cmluZyk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihkYXRhKTsKKyAgICB9CisgICAg
cmV0dXJuIGRhdGE7Cit9CisKK1Bhc3NSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IFNwYWNl
U3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUoY29uc3QgU3BhY2VTcGxpdFN0cmluZ0RhdGEmIG90aGVy
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BhY2VTcGxpdFN0cmluZ0RhdGEob3RoZXIp
KTsKK30KKworU3BhY2VTcGxpdFN0cmluZ0RhdGE6OlNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0
IEF0b21pY1N0cmluZyYgc3RyaW5nKQorICAgIDogbV9zdHJpbmcoc3RyaW5nKQoreworICAgIEFT
U0VSVCghbV9zdHJpbmcuaXNOdWxsKCkpOworICAgIGNyZWF0ZVZlY3RvcihtX3N0cmluZyk7Cit9
CisKK1NwYWNlU3BsaXRTdHJpbmdEYXRhOjpTcGFjZVNwbGl0U3RyaW5nRGF0YShjb25zdCBTcGFj
ZVNwbGl0U3RyaW5nRGF0YSYgb3RoZXIpCisgICAgOiBSZWZDb3VudGVkPFNwYWNlU3BsaXRTdHJp
bmdEYXRhPigpCisgICAgLCBtX3ZlY3RvcihvdGhlci5tX3ZlY3RvcikKK3sKKyAgICAvLyBOb3Rl
IHRoYXQgd2UgZG9uJ3QgY29weSBtX3N0cmluZyB0byBpbmRpY2F0ZSB0byB0aGUgZGVzdHJ1Y3Rv
ciB0aGF0IHRoZXJlJ3Mgbm90aGluZworICAgIC8vIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2hh
cmVkRGF0YU1hcCgpLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NwYWNlU3BsaXRTdHJpbmcuaAppbmRleCBiZDM4ZTg0Li4wYTYyYjliIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgKQEAgLTIxLDIwICsyMSwxOCBAQAogI2lmbmRlZiBTcGFj
ZVNwbGl0U3RyaW5nX2gKICNkZWZpbmUgU3BhY2VTcGxpdFN0cmluZ19oCiAKLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU3Bh
Y2VTcGxpdFN0cmluZ0RhdGEgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGFjZVNw
bGl0U3RyaW5nRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGNsYXNzIFNwYWNl
U3BsaXRTdHJpbmdEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3BhY2VTcGxpdFN0cmluZ0RhdGE+
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBib29sIHNob3VsZEZvbGRDYXNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
cmVhdGVWZWN0b3Ioc3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7Ci0gICAgICAgIH0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0Rh
dGE+IGNyZWF0ZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nRGF0YSYpOworCisgICAgICAgIH5TcGFj
ZVNwbGl0U3RyaW5nRGF0YSgpOwogCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWlj
U3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTU1LDE3ICs1MywyMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgeyBBU1NFUlQoaSA8IHNpemUoKSk7IHJldHVybiBtX3ZlY3RvcltpXTsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdm9pZCBjcmVhdGVWZWN0b3IoY29uc3QgU3RyaW5nJiwgYm9vbCBzaG91
bGRGb2xkQ2FzZSk7CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0IEF0b21pY1N0
cmluZyYpOworICAgICAgICBTcGFjZVNwbGl0U3RyaW5nRGF0YShjb25zdCBTcGFjZVNwbGl0U3Ry
aW5nRGF0YSYpOworCisgICAgICAgIHZvaWQgY3JlYXRlVmVjdG9yKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgICAgIFZlY3RvcjxBdG9taWNTdHJpbmcsIDI+IG1fdmVjdG9yOworICAgICAgICBBdG9t
aWNTdHJpbmcgbV9zdHJpbmc7CisgICAgICAgIFZlY3RvcjxBdG9taWNTdHJpbmcsIDQ+IG1fdmVj
dG9yOwogICAgIH07CiAKICAgICBjbGFzcyBTcGFjZVNwbGl0U3RyaW5nIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcoKSB7IH0KLSAgICAgICAgU3BhY2VTcGxpdFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzaG91bGRGb2xkQ2FzZSkgOiBtX2RhdGEoYWRv
cHRQdHIobmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZywgc2hvdWxkRm9sZENhc2UpKSkg
eyB9CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcs
IGJvb2wgc2hvdWxkRm9sZENhc2UpIHsgc2V0KHN0cmluZywgc2hvdWxkRm9sZENhc2UpOyB9CiAK
LSAgICAgICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENh
c2UpIHsgbV9kYXRhID0gYWRvcHRQdHIobmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZywg
c2hvdWxkRm9sZENhc2UpKTsgfQorICAgICAgICB2b2lkIHNldChjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmluZywgYm9vbCBzaG91bGRGb2xkQ2FzZSk7CiAgICAgICAgIHZvaWQgY2xlYXIoKSB7IG1f
ZGF0YS5jbGVhcigpOyB9CiAKICAgICAgICAgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmluZykgY29uc3QgeyByZXR1cm4gbV9kYXRhICYmIG1fZGF0YS0+Y29udGFpbnMoc3Ry
aW5nKTsgfQpAQCAtNzgsNyArODAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgQVNTRVJUKGkg
PCBzaXplKCkpOyByZXR1cm4gKCptX2RhdGEpW2ldOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBPd25QdHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IG1fZGF0YTsKKyAgICAgICAgdm9pZCBlbnN1
cmVVbmlxdWUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9kYXRhICYmICFtX2RhdGEt
Pmhhc09uZVJlZigpKQorICAgICAgICAgICAgICAgIG1fZGF0YSA9IFNwYWNlU3BsaXRTdHJpbmdE
YXRhOjpjcmVhdGUoKm1fZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8U3BhY2VT
cGxpdFN0cmluZ0RhdGE+IG1fZGF0YTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122791</attachid>
            <date>2012-01-17 11:42:29 -0800</date>
            <delta_ts>2012-01-17 12:16:06 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-76458-v2.diff</filename>
            <type>text/plain</type>
            <size>8886</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5ZWZlOGQ3Li40ZDMzMjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYg
QEAKKzIwMTItMDEtMTcgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmc6IFNoYXJlIGVxdWl2YWxlbnQgc3RyaW5nIHBpZWNl
IHZlY3RvcnMuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc2NDU4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU3BhY2VTcGxpdFN0
cmluZ0RhdGEgcmVmLWNvdW50ZWQgYW5kIGNhY2hlIHRoZW0gaW4gYSBoYXNobWFwIHRvIHJlZHVj
ZSBtZW1vcnkKKyAgICAgICAgdXNhZ2UgYW5kIGF2b2lkIHJlZHVuZGFudCBzdHJpbmcgc3BsaXR0
aW5nIHdvcmsuICBUaGlzIHJlZHVjZXMgbWVtb3J5IGNvbnN1bXB0aW9uCisgICAgICAgIGJ5IDYx
OCBrQiAob24gNjQtYml0KSB3aGVuIHZpZXdpbmcgdGhlIGZ1bGwgSFRNTDUgc3BlYyBhdCA8aHR0
cDovL3doYXR3Zy5vcmcvYz4KKworICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmg6CisK
KyAgICAgICAgICAgIEFkZCB0aGUgc291cmNlIHN0cmluZyB0byBTcGFjZVNwbGl0U3RyaW5nRGF0
YSBzbyB3ZSBoYXZlIGEga2V5IGZvciB1bmNhY2hpbmcKKyAgICAgICAgICAgIGluIHRoZSBkZXN0
cnVjdG9yLiBBbHNvIGJ1bXBlZCB0aGUgdmVjdG9yJ3MgaW5saW5lIHNpemUgZnJvbSAyIHRvIDQu
CisKKyAgICAgICAgKiBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWREYXRhTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRh
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0cmluZ0RhdGE6OlNwYWNl
U3BsaXRTdHJpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmc6OlNw
YWNlU3BsaXRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U3BhY2VTcGxpdFN0cmluZzo6c2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGVWZWN0b3Ip
OgorCisgICAgICAgICAgICBBZGRlZCBjcmVhdGUoKSBtZXRob2RzIGZvciBTcGFjZVNwbGl0U3Ry
aW5nRGF0YS4gTW92ZWQgY2FzZSBmb2xkaW5nIGZyb20KKyAgICAgICAgICAgIGNyZWF0ZVZlY3Rv
cigpIHRvIGNyZWF0ZShBdG9taWNTdHJpbmcpLiBBZGRlZCBhIGhhc2ggbWFwIGZvciBjYWNoaW5n
CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgLT4gU3BhY2VTcGxpdFN0cmluZ0RhdGEuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjp+U3BhY2VTcGxpdFN0cmluZ0Rh
dGEpOgorCisgICAgICAgICAgICBSZW1vdmUgdGhlIFNwYWNlU3BsaXRTdHJpbmdEYXRhIGZyb20g
dGhlIHNoYXJlZERhdGFNYXAoKS4KKworICAgICAgICAqIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmc6OmVuc3VyZVVuaXF1ZSk6CisK
KyAgICAgICAgICAgIEFkZGVkLCBkZXRhY2hlcyBmcm9tIHRoZSBzaGFyZWQgU3BhY2VTcGxpdFN0
cmluZ0RhdGEgaWYgbmVjZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3Ry
aW5nRGF0YTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwYWNlU3BsaXRTdHJpbmdEYXRhOjpy
ZW1vdmUpOgorCisgICAgICAgICAgICBBc3NlcnQgdGhhdCBhZGQoKSBhbmQgcmVtb3ZlKCkgYXJl
IG9ubHkgdXNlZCBvbiB1bmlxdWUgU3BhY2VTcGxpdFN0cmluZ0RhdGEuCisKKyAgICAgICAgKFdl
YkNvcmU6OlNwYWNlU3BsaXRTdHJpbmc6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNw
bGl0U3RyaW5nOjpyZW1vdmUpOgorCisgICAgICAgICAgICBDYWxsIGVuc3VyZVVuaXF1ZSgpIHRv
IHBvdGVudGlhbGx5IGRldGFjaCBmcm9tIGEgc2hhcmVkIFNwYWNlU3BsaXRTdHJpbmdEYXRhCisg
ICAgICAgICAgICBiZWZvcmUgbWFraW5nIG1vZGlmaWNhdGlvbnMuCisKKyAgICAgICAgKiBkb20v
U3BhY2VTcGxpdFN0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGFjZVNwbGl0U3RyaW5n
RGF0YTo6Y29udGFpbnNBbGwpOgorCisgICAgICAgICAgICBBZGRlZCBncmF0dWl0b3VzIGZhc3Qg
cGF0aCBmb3IgY29udGFpbnNBbGwoKnRoaXMpLgorCiAyMDEyLTAxLTE2ICBKb24gTGVlICA8am9u
bGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIHIxMDUwODYuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKaW5kZXggNzhiODU5ZC4uOGVmZWE4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NwYWNlU3BsaXRTdHJpbmcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcApAQCAtMjMsNiArMjMsOCBAQAog
CiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBl
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNT
dHJpbmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV1RGOwpAQCAtNDMsMTMgKzQ1LDggQEAgc3RhdGljIGJvb2wgaGFzTm9uQVND
SUlPclVwcGVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBoYXNVcHBlciB8fCAo
b3JlZCAmIH4weDdGKTsKIH0KIAotdm9pZCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlVmVj
dG9yKGNvbnN0IFN0cmluZyYgaW5wdXRTdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENhc2UpCit2b2lk
IFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGVWZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiB7Ci0gICAgU3RyaW5nIHN0cmluZyhpbnB1dFN0cmluZyk7Ci0KLSAgICBpZiAoc2hvdWxkRm9s
ZENhc2UgJiYgaGFzTm9uQVNDSUlPclVwcGVyKGlucHV0U3RyaW5nKSkKLSAgICAgICAgc3RyaW5n
ID0gaW5wdXRTdHJpbmcuZm9sZENhc2UoKTsKLQogICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJz
ID0gc3RyaW5nLmNoYXJhY3RlcnMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVu
Z3RoKCk7CiAgICAgdW5zaWduZWQgc3RhcnQgPSAwOwpAQCAtNzAsNiArNjcsOSBAQCB2b2lkIFNw
YWNlU3BsaXRTdHJpbmdEYXRhOjpjcmVhdGVWZWN0b3IoY29uc3QgU3RyaW5nJiBpbnB1dFN0cmlu
ZywgYm9vbCBzaG91bGRGbwogCiBib29sIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpjb250YWluc0Fs
bChTcGFjZVNwbGl0U3RyaW5nRGF0YSYgb3RoZXIpCiB7CisgICAgaWYgKHRoaXMgPT0gJm90aGVy
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHNpemVfdCB0aGlzU2l6ZSA9IG1fdmVjdG9y
LnNpemUoKTsKICAgICBzaXplX3Qgb3RoZXJTaXplID0gb3RoZXIubV92ZWN0b3Iuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3RoZXJTaXplOyArK2kpIHsKQEAgLTg3LDYgKzg3
LDcgQEAgYm9vbCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y29udGFpbnNBbGwoU3BhY2VTcGxpdFN0
cmluZ0RhdGEmIG90aGVyKQogCiB2b2lkIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjphZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcpCiB7CisgICAgQVNTRVJUKGhhc09uZVJlZigpKTsKICAgICBp
ZiAoY29udGFpbnMoc3RyaW5nKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05NSw2ICs5Niw3IEBA
IHZvaWQgU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmFkZChjb25zdCBBdG9taWNTdHJpbmcmIHN0cmlu
ZykKIAogdm9pZCBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6cmVtb3ZlKGNvbnN0IEF0b21pY1N0cmlu
ZyYgc3RyaW5nKQogeworICAgIEFTU0VSVChoYXNPbmVSZWYoKSk7CiAgICAgc2l6ZV90IHBvc2l0
aW9uID0gMDsKICAgICB3aGlsZSAocG9zaXRpb24gPCBtX3ZlY3Rvci5zaXplKCkpIHsKICAgICAg
ICAgaWYgKG1fdmVjdG9yW3Bvc2l0aW9uXSA9PSBzdHJpbmcpCkBAIC0xMDYsMTQgKzEwOCw3NCBA
QCB2b2lkIFNwYWNlU3BsaXRTdHJpbmdEYXRhOjpyZW1vdmUoY29uc3QgQXRvbWljU3RyaW5nJiBz
dHJpbmcpCiAKIHZvaWQgU3BhY2VTcGxpdFN0cmluZzo6YWRkKGNvbnN0IEF0b21pY1N0cmluZyYg
c3RyaW5nKQogeworICAgIGVuc3VyZVVuaXF1ZSgpOwogICAgIGlmIChtX2RhdGEpCiAgICAgICAg
IG1fZGF0YS0+YWRkKHN0cmluZyk7CiB9CiAKIHZvaWQgU3BhY2VTcGxpdFN0cmluZzo6cmVtb3Zl
KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQogeworICAgIGVuc3VyZVVuaXF1ZSgpOwogICAg
IGlmIChtX2RhdGEpCiAgICAgICAgIG1fZGF0YS0+cmVtb3ZlKHN0cmluZyk7CiB9CiAKK3R5cGVk
ZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFNwYWNlU3BsaXRTdHJpbmdEYXRhKj4gU3BhY2VTcGxp
dFN0cmluZ0RhdGFNYXA7CisKK3N0YXRpYyBTcGFjZVNwbGl0U3RyaW5nRGF0YU1hcCYgc2hhcmVk
RGF0YU1hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTcGFjZVNwbGl0U3RyaW5nRGF0
YU1hcCwgbWFwLCAoKSk7CisgICAgcmV0dXJuIG1hcDsKK30KKwordm9pZCBTcGFjZVNwbGl0U3Ry
aW5nOjpzZXQoY29uc3QgQXRvbWljU3RyaW5nJiBpbnB1dFN0cmluZywgYm9vbCBzaG91bGRGb2xk
Q2FzZSkKK3sKKyAgICBpZiAoaW5wdXRTdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgY2xlYXIo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFN0cmluZyBzdHJpbmcoaW5wdXRTdHJp
bmcpOworICAgIGlmIChzaG91bGRGb2xkQ2FzZSAmJiBoYXNOb25BU0NJSU9yVXBwZXIoc3RyaW5n
KSkKKyAgICAgICAgc3RyaW5nID0gc3RyaW5nLmZvbGRDYXNlKCk7CisKKyAgICBtX2RhdGEgPSBT
cGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3JlYXRlKHN0cmluZyk7Cit9CisKK1NwYWNlU3BsaXRTdHJp
bmdEYXRhOjp+U3BhY2VTcGxpdFN0cmluZ0RhdGEoKQoreworICAgIGlmICghbV9zdHJpbmcuaXNO
dWxsKCkpCisgICAgICAgIHNoYXJlZERhdGFNYXAoKS5yZW1vdmUobV9zdHJpbmcpOworfQorCitQ
YXNzUmVmUHRyPFNwYWNlU3BsaXRTdHJpbmdEYXRhPiBTcGFjZVNwbGl0U3RyaW5nRGF0YTo6Y3Jl
YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKQoreworICAgIFNwYWNlU3BsaXRTdHJpbmdE
YXRhKiYgZGF0YSA9IHNoYXJlZERhdGFNYXAoKS5hZGQoc3RyaW5nLCAwKS5maXJzdC0+c2Vjb25k
OworICAgIGlmICghZGF0YSkgeworICAgICAgICBkYXRhID0gbmV3IFNwYWNlU3BsaXRTdHJpbmdE
YXRhKHN0cmluZyk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihkYXRhKTsKKyAgICB9CisgICAg
cmV0dXJuIGRhdGE7Cit9CisKK1Bhc3NSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IFNwYWNl
U3BsaXRTdHJpbmdEYXRhOjpjcmVhdGUoY29uc3QgU3BhY2VTcGxpdFN0cmluZ0RhdGEmIG90aGVy
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BhY2VTcGxpdFN0cmluZ0RhdGEob3RoZXIp
KTsKK30KKworU3BhY2VTcGxpdFN0cmluZ0RhdGE6OlNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0
IEF0b21pY1N0cmluZyYgc3RyaW5nKQorICAgIDogbV9zdHJpbmcoc3RyaW5nKQoreworICAgIEFT
U0VSVCghbV9zdHJpbmcuaXNOdWxsKCkpOworICAgIGNyZWF0ZVZlY3RvcihtX3N0cmluZyk7Cit9
CisKK1NwYWNlU3BsaXRTdHJpbmdEYXRhOjpTcGFjZVNwbGl0U3RyaW5nRGF0YShjb25zdCBTcGFj
ZVNwbGl0U3RyaW5nRGF0YSYgb3RoZXIpCisgICAgOiBSZWZDb3VudGVkPFNwYWNlU3BsaXRTdHJp
bmdEYXRhPigpCisgICAgLCBtX3ZlY3RvcihvdGhlci5tX3ZlY3RvcikKK3sKKyAgICAvLyBOb3Rl
IHRoYXQgd2UgZG9uJ3QgY29weSBtX3N0cmluZyB0byBpbmRpY2F0ZSB0byB0aGUgZGVzdHJ1Y3Rv
ciB0aGF0IHRoZXJlJ3Mgbm90aGluZworICAgIC8vIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2hh
cmVkRGF0YU1hcCgpLgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NwYWNlU3BsaXRTdHJpbmcuaAppbmRleCBiZDM4ZTg0Li5hODBjOTVmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU3BhY2VTcGxpdFN0cmluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgKQEAgLTIxLDIwICsyMSwxOCBAQAogI2lmbmRlZiBTcGFj
ZVNwbGl0U3RyaW5nX2gKICNkZWZpbmUgU3BhY2VTcGxpdFN0cmluZ19oCiAKLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU3Bh
Y2VTcGxpdFN0cmluZ0RhdGEgewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTcGFjZVNw
bGl0U3RyaW5nRGF0YSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGNsYXNzIFNwYWNl
U3BsaXRTdHJpbmdEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U3BhY2VTcGxpdFN0cmluZ0RhdGE+
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBib29sIHNob3VsZEZvbGRDYXNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
cmVhdGVWZWN0b3Ioc3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7Ci0gICAgICAgIH0KKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0RhdGE+IGNyZWF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3BhY2VTcGxpdFN0cmluZ0Rh
dGE+IGNyZWF0ZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nRGF0YSYpOworCisgICAgICAgIH5TcGFj
ZVNwbGl0U3RyaW5nRGF0YSgpOwogCiAgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgQXRvbWlj
U3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKQEAgLTU1LDE3ICs1MywyMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgeyBBU1NFUlQoaSA8IHNpemUoKSk7IHJldHVybiBtX3ZlY3RvcltpXTsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdm9pZCBjcmVhdGVWZWN0b3IoY29uc3QgU3RyaW5nJiwgYm9vbCBzaG91
bGRGb2xkQ2FzZSk7CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmdEYXRhKGNvbnN0IEF0b21pY1N0
cmluZyYpOworICAgICAgICBTcGFjZVNwbGl0U3RyaW5nRGF0YShjb25zdCBTcGFjZVNwbGl0U3Ry
aW5nRGF0YSYpOworCisgICAgICAgIHZvaWQgY3JlYXRlVmVjdG9yKGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgICAgIFZlY3RvcjxBdG9taWNTdHJpbmcsIDI+IG1fdmVjdG9yOworICAgICAgICBBdG9t
aWNTdHJpbmcgbV9zdHJpbmc7CisgICAgICAgIFZlY3RvcjxBdG9taWNTdHJpbmcsIDQ+IG1fdmVj
dG9yOwogICAgIH07CiAKICAgICBjbGFzcyBTcGFjZVNwbGl0U3RyaW5nIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcoKSB7IH0KLSAgICAgICAgU3BhY2VTcGxpdFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBzaG91bGRGb2xkQ2FzZSkgOiBtX2RhdGEoYWRv
cHRQdHIobmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZywgc2hvdWxkRm9sZENhc2UpKSkg
eyB9CisgICAgICAgIFNwYWNlU3BsaXRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcs
IGJvb2wgc2hvdWxkRm9sZENhc2UpIHsgc2V0KHN0cmluZywgc2hvdWxkRm9sZENhc2UpOyB9CiAK
LSAgICAgICAgdm9pZCBzZXQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgc2hvdWxkRm9sZENh
c2UpIHsgbV9kYXRhID0gYWRvcHRQdHIobmV3IFNwYWNlU3BsaXRTdHJpbmdEYXRhKHN0cmluZywg
c2hvdWxkRm9sZENhc2UpKTsgfQorICAgICAgICB2b2lkIHNldChjb25zdCBBdG9taWNTdHJpbmcm
LCBib29sIHNob3VsZEZvbGRDYXNlKTsKICAgICAgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmNs
ZWFyKCk7IH0KIAogICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYgc3Ry
aW5nKSBjb25zdCB7IHJldHVybiBtX2RhdGEgJiYgbV9kYXRhLT5jb250YWlucyhzdHJpbmcpOyB9
CkBAIC03OCw3ICs4MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyBBU1NFUlQoaSA8IHNpemUo
KSk7IHJldHVybiAoKm1fZGF0YSlbaV07IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0
cjxTcGFjZVNwbGl0U3RyaW5nRGF0YT4gbV9kYXRhOworICAgICAgICB2b2lkIGVuc3VyZVVuaXF1
ZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2RhdGEgJiYgIW1fZGF0YS0+aGFzT25l
UmVmKCkpCisgICAgICAgICAgICAgICAgbV9kYXRhID0gU3BhY2VTcGxpdFN0cmluZ0RhdGE6OmNy
ZWF0ZSgqbV9kYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxTcGFjZVNwbGl0U3Ry
aW5nRGF0YT4gbV9kYXRhOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="123676"
          type_id="1"
          status="+"
          setter="koivisto"
    />
    <flag name="commit-queue"
          id="123684"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
      

    </bug>

</bugzilla>