<?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>38131</bug_id>
          
          <creation_ts>2010-04-26 11:18:22 -0700</creation_ts>
          <short_desc>REGRESSION (r57292): 1.5% page load speed regression from visited link information leak fix</short_desc>
          <delta_ts>2010-04-26 17:10:18 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217204</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-26 11:18:22 -0700</bug_when>
    <thetext>REGRESSION (r57292): 1.5% page load speed regression from visited link information leak fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217312</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-26 15:11:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/7859794&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217313</commentid>
    <comment_count>2</comment_count>
      <attachid>54339</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-26 15:14:00 -0700</bug_when>
    <thetext>Created attachment 54339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217318</commentid>
    <comment_count>3</comment_count>
      <attachid>54339</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-26 15:23:25 -0700</bug_when>
    <thetext>Comment on attachment 54339
Patch

&gt; Index: WebCore/css/CSSMutableStyleDeclaration.cpp
&gt; ===================================================================
&gt; --- WebCore/css/CSSMutableStyleDeclaration.cpp	(revision 58222)
&gt; +++ WebCore/css/CSSMutableStyleDeclaration.cpp	(working copy)
&gt; @@ -629,7 +629,7 @@ void CSSMutableStyleDeclaration::setLeng
&gt;  
&gt;  unsigned CSSMutableStyleDeclaration::length() const
&gt;  {
&gt; -    return m_properties.size();
&gt; +    return mutableLength();
&gt;  }
&gt;  
&gt;  String CSSMutableStyleDeclaration::item(unsigned i) const
&gt; Index: WebCore/css/CSSMutableStyleDeclaration.h
&gt; ===================================================================
&gt; --- WebCore/css/CSSMutableStyleDeclaration.h	(revision 58222)
&gt; +++ WebCore/css/CSSMutableStyleDeclaration.h	(working copy)
&gt; @@ -89,6 +89,8 @@ public:
&gt;      virtual void setCssText(const String&amp;, ExceptionCode&amp;);
&gt;  
&gt;      virtual unsigned length() const;
&gt; +    unsigned mutableLength() const { return m_properties.size(); }

In person, I suggested another way of doing this optimization that is better. Make the length function in the base class non-virtual, and have it be an inline that calls a virtual. Then this class can override length.

This pattern is used for EventListener::isAttribute, Node::localName, Node::namespaceURI, Node::prefix, Node::computedStyle, ScriptExecutionContext::url, ScriptExecutionContext::completeURL, and HTMLElement::form.

This eliminates the unpleasant &quot;mutableLength()&quot; name.

r=me if you change that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217368</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-04-26 17:10:18 -0700</bug_when>
    <thetext>Committed r58273: &lt;http://trac.webkit.org/changeset/58273&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54339</attachid>
            <date>2010-04-26 15:14:00 -0700</date>
            <delta_ts>2010-04-26 15:23:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38131-20100426151359.patch</filename>
            <type>text/plain</type>
            <size>12154</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODI2MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjAgQEAKKzIwMTAtMDQtMjYgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
RUdSRVNTSU9OIChyNTcyOTIpOiAxLjUlIHBhZ2UgbG9hZCBzcGVlZCByZWdyZXNzaW9uIGZyb20g
dmlzaXRlZCBsaW5rIGluZm9ybWF0aW9uIGxlYWsgZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODEzMQorCisgICAgICAgIEkgZGlkIGEgbnVtYmVy
IG9mIHNlcGFyYXRlIG9wdGltaXphdGlvbnMgd2hpY2ggc3BlZWQgdXAgc3R5bGUKKyAgICAgICAg
cmVzb2x1dGlvbiBlbm91Z2ggdG8gbW9yZSB0aGFuIG1ha2UgdXAgZm9yIHRoZSByZWdyZXNzaW9u
LiBUaGlzCisgICAgICAgIG1lYXN1cmVzIGFzIGEgdG90YWwgUExUIHNwZWVkdXAgb2Ygc29tZXdo
ZXJlIGJldHdlZW4gMS41JSBhbmQKKyAgICAgICAgMy43JS4KKyAgICAgICAKKyAgICAgICAgT3B0
aW1pemF0aW9ucyBkb25lOgorICAgICAgICAtIENhY2hlIGRldGVybWluZUxpbmtTdGF0ZSByZXN1
bHRzLCB0byBhdm9pZCB0aGUgbmVlZCB0byByZXBlYXRlZGx5IGNvbXB1dGUKKyAgICAgICAgdGhl
IHZpc2l0ZWQgbGluayBoYXNoIGZvciB0aGUgc2FtZSBlbGVtZW50LiBUaGlzIGRpcmVjdGx5IGFk
ZHJlc3NlcyBtdWNoCisgICAgICAgIG9mIHRoZSBzbG93ZG93biwgc2luY2UgYWxsIGVsZW1lbnRz
IGdldCB0aGVpciBzdHlsZSBjb21wdXRlZCB0d2ljZSBub3cuCisgICAgICAgIC0gQWRkZWQgYSBm
YXN0IHdheSB0byBnZXQgdGhlIGxlbmd0aCBvZiBhIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LCBhbmQgdXNlCisgICAgICAgIGluIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXNGb3JMaXN0
LCBzaW5jZSBpdCB3YXMgaG90IHRoZXJlLgorICAgICAgICAtIEhvaXN0IHNvbWUgbG9vcCBpbnZh
cmlhbnQgY29kZSB0aGF0J3Mgbm90IGRldGVjdGVkIGJ5IHRoZSBjb21waWxlciBvdXQgb2YgdGhl
CisgICAgICAgIG1haW4gbG9vcCBpbiBtYXRjaFJ1bGVzRm9yTGlzdAorICAgICAgICAtIGlubGlu
ZSBDU1NTdHlsZVNlbGVjdG9yOjppbml0RWxlbWVudCBhbmQgbG9jYXRlU2hhcmVkU3R5bGUsCisg
ICAgICAgIHNpbmNlIHRoZXJlIGlzIG9ubHkgb25lIGNhbGwgc2l0ZSBpbiBlYWNoIGNhc2UKKyAg
ICAgICAgLSBJbmxpbmUgdGhlIGNvbW1vbiBub24tbGluZSBmYXN0IGNhc2Ugb2YgZGV0ZXJtaW5l
TGlua1N0YXRlLCBhbmQgc3BsaXQgdGhlIHJlc3QgaW50bworICAgICAgICBvdXQtb2YtbGluZSBk
ZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZS4KKyAgICAgICAgLSBBZGRlZCBpbmxpbmUgdmVyc2lv
bnMgb2YgdGhlIGZ1bmN0aW9ucyBjYWxsZWQgYnkKKyAgICAgICAgdmlzaXRlZExpbmtIYXNoICh0
aGUgdmVyc2lvbiBjYWxsZWQgYnkgZGV0ZXJtaW5lTGlua1N0YXRlKS4KKworICAgICAgICAqIGNz
cy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6bGVuZ3RoKTogSW1wbGVtZW50ZWQgaW4gdGVybXMgb2Yg
bmV3CisgICAgICAgIGlubGluZSBub252aXJ0dWFsIG11dGFibGVMZW5ndGgoKS4KKyAgICAgICAg
KiBjc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjptdXRhYmxlTGVuZ3RoKTogQWRkZWQgbmV3IG5vbnZp
cnR1YWwKKyAgICAgICAgaW5saW5lIHdheSB0byBnZXQgdGhlIGxlbmd0aCBpZiB5b3Uga25vdyB5
b3UgaGF2ZSBhIG11dGFibGUgc3R5bGUgZGVjbC4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppbml0KTogQ2xl
YXIgY2FjaGVkIGxpbmsgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjptYXRjaFJ1bGVzRm9yTGlzdCk6IGhvaXN0IHNvbWUgY29kZSBvdXQgb2YgdGhlIG1haW4KKyAg
ICAgICAgbG9vcCBhbmQgZ2V0IHN0eWxlIGRlY2wgbGVuZ3RoIG1vcmUgZWZmaWNpZW50bHkuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppbml0RWxlbWVudCk6IGlubGluZSAo
b25seSBvbmUgY2FsbCBzaXRlKQorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rU3RhdGUpOiBJbmxpbmUgZmFzdAorICAgICAg
ICBjYXNlLCBjYWxsIHNsb3cgY2FzZS4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua1N0YXRlU2xvd0Nhc2UpOiBTcGxpdAor
ICAgICAgICBtb3N0IG9mIHRoZSBhYm92ZSBmdW5jdGlvbiBpbnRvIHRoaXMgc2xvdyBjYXNlIGhl
bHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5bGVX
aXRoRWxlbWVudCk6IFVzZSB0aGUgY2FjaGUtZW5hYmxlZAorICAgICAgICB3YXkgdG8gZ2V0IHRo
ZSBjdXJyZW50IGxpbmsgc3RhdGUuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
Ojpsb2NhdGVTaGFyZWRTdHlsZSk6IGlubGluZQorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KTogVXNlIHRoZSBjYWNoZS1lbmFibGVkIHdheQorICAg
ICAgICB0byBnZXQgdGhlIGN1cnJlbnQgbGluayBzdGF0ZS4KKyAgICAgICAgKiBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y3VycmVu
dEVsZW1lbnRMaW5rU3RhdGUpOiBpbmxpbmUgd2F5IHRvCisgICAgICAgIGdldCBsaW5rIHN0YXRl
IGZvciB0aGUgY3VycmVudCBlbGVtZW50OyBtYW5hZ2VzIHRoZSBjYWNoZQorICAgICAgICAqIHBs
YXRmb3JtL0xpbmtIYXNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0ZWRMaW5rSGFzaElu
bGluZSk6IGlubGluZSB2ZXJzaW9uIG9mIGJlbG93IGZ1bmN0aW9uCisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpdGVkTGlua0hhc2gpOiBjYWxsIHRoZSBpbmxpbmUgdmVyc2lvbgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaXRlZFVSTElubGluZSk6IGlubGluZSB2ZXJzaW9uIG9mIGJlbG93IGZ1bmN0aW9u
CisgICAgICAgIChXZWJDb3JlOjp2aXNpdGVkVVJMKTogY2FsbCB0aGUgaW5saW5lIHZlcnNpb24K
KyAgICAgICAgKFdlYkNvcmU6OnZpc2l0ZWRVUkwpOiBjYWxsIGlubGluZSB2ZXJzaW9ucyBvZiBh
Ym92ZSB0d28gZnVuY3Rpb25zCisKIDIwMTAtMDQtMjYgIFJvbWFuIEdlcnNobWFuICA8cm9tYW5n
ZUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiA1ODIy
MikKKysrIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjI5LDcgKzYyOSw3IEBAIHZvaWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OnNldExlbmcKIAogdW5zaWduZWQgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246Omxlbmd0
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJvcGVydGllcy5zaXplKCk7CisgICAgcmV0dXJu
IG11dGFibGVMZW5ndGgoKTsKIH0KIAogU3RyaW5nIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
OjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDU4MjIyKQorKysgV2ViQ29yZS9jc3MvQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOwogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICB1bnNp
Z25lZCBtdXRhYmxlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLnNpemUoKTsg
fQorCiAgICAgdmlydHVhbCBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHBy
b3BlcnR5SUQpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDU4MjIyKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4Niw2ICs0ODYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZEtleWZyYW1l
U3R5bGUoCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmluaXQoKQogewogICAgIG1fZWxlbWVudCA9
IDA7CisgICAgbV9oYXZlQ2FjaGVkTGlua1N0YXRlID0gZmFsc2U7CiAgICAgbV9tYXRjaGVkRGVj
bHMuY2xlYXIoKTsKICAgICBtX3J1bGVMaXN0ID0gMDsKICAgICBtX3Jvb3REZWZhdWx0U3R5bGUg
PSAwOwpAQCAtNjk0LDE0ICs2OTUsMTQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXRjaFJ1
bGVzRm9yTGlzdAogICAgIGlmICghcnVsZXMpCiAgICAgICAgIHJldHVybjsKIAorICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lID0gbV9lbGVtZW50LT5sb2NhbE5hbWUoKTsKICAgICBm
b3IgKENTU1J1bGVEYXRhKiBkID0gcnVsZXMtPmZpcnN0KCk7IGQ7IGQgPSBkLT5uZXh0KCkpIHsK
ICAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gZC0+cnVsZSgpOwotICAgICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSA9IG1fZWxlbWVudC0+bG9jYWxOYW1lKCk7CiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0b3JMb2NhbE5hbWUgPSBkLT5zZWxlY3RvcigpLT5t
X3RhZy5sb2NhbE5hbWUoKTsKICAgICAgICAgaWYgKChsb2NhbE5hbWUgPT0gc2VsZWN0b3JMb2Nh
bE5hbWUgfHwgc2VsZWN0b3JMb2NhbE5hbWUgPT0gc3RhckF0b20pICYmIGNoZWNrU2VsZWN0b3Io
ZC0+c2VsZWN0b3IoKSkpIHsKICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9w
ZXJ0aWVzIHRvIGFwcGx5LCB0aGVuIGlnbm9yZSBpdC4KICAgICAgICAgICAgIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBkZWNsID0gcnVsZS0+ZGVjbGFyYXRpb24oKTsKLSAgICAgICAgICAg
IGlmICghZGVjbCB8fCAhZGVjbC0+bGVuZ3RoKCkpCisgICAgICAgICAgICBpZiAoIWRlY2wgfHwg
IWRlY2wtPm11dGFibGVMZW5ndGgoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgLy8gSWYgd2UncmUgbWF0Y2hpbmcgbm9ybWFsIHJ1bGVzLCBz
ZXQgYSBwc2V1ZG8gYml0IGlmIApAQCAtODAwLDggKzgwMSwxMSBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OnNvcnRNYXRjaGVkUnVsZXMoCiAgICAgICAgIG1fbWF0Y2hlZFJ1bGVzW2ldID0gcnVs
ZXNNZXJnZUJ1ZmZlcltpIC0gc3RhcnRdOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6Omlu
aXRFbGVtZW50KEVsZW1lbnQqIGUpCitpbmxpbmUgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0
RWxlbWVudChFbGVtZW50KiBlKQogeworICAgIGlmIChtX2VsZW1lbnQgIT0gZSkKKyAgICAgICAg
bV9oYXZlQ2FjaGVkTGlua1N0YXRlID0gZmFsc2U7CisKICAgICBtX2VsZW1lbnQgPSBlOwogICAg
IG1fc3R5bGVkRWxlbWVudCA9IG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzU3R5bGVkRWxlbWVu
dCgpID8gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG1fZWxlbWVudCkgOiAwOwogfQpAQCAt
ODc0LDEwICs4NzgsMTcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpTZWxl
YwogewogfQogCi1FSW5zaWRlTGluayBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6
OmRldGVybWluZUxpbmtTdGF0ZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAoraW5saW5lIEVJbnNp
ZGVMaW5rIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6ZGV0ZXJtaW5lTGlua1N0
YXRlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFlbGVtZW50LT5pc0xpbmso
KSkKICAgICAgICAgcmV0dXJuIE5vdEluc2lkZUxpbms7CisgICAgcmV0dXJuIGRldGVybWluZUxp
bmtTdGF0ZVNsb3dDYXNlKGVsZW1lbnQpOworfQorICAgIAorCitFSW5zaWRlTGluayBDU1NTdHls
ZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmRldGVybWluZUxpbmtTdGF0ZVNsb3dDYXNlKEVs
ZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1lbnQtPmlzTGluaygpKTsK
ICAgICAKICAgICBjb25zdCBBdG9taWNTdHJpbmcqIGF0dHIgPSBsaW5rQXR0cmlidXRlKGVsZW1l
bnQpOwogICAgIGlmICghYXR0ciB8fCBhdHRyLT5pc051bGwoKSkKQEAgLTEwMjUsNyArMTAzNiw3
IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FuU2hhcmVTdHlsZVdpdGgKICAgICAgICAgICAg
ICAgICAgICAgbWFwcGVkQXR0cnNNYXRjaCA9IHMtPm1hcHBlZEF0dHJpYnV0ZXMoKS0+bWFwc0Vx
dWl2YWxlbnQobV9zdHlsZWRFbGVtZW50LT5tYXBwZWRBdHRyaWJ1dGVzKCkpOwogICAgICAgICAg
ICAgICAgIGlmIChtYXBwZWRBdHRyc01hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChz
LT5pc0xpbmsoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fY2hlY2tlci5kZXRl
cm1pbmVMaW5rU3RhdGUobV9lbGVtZW50KSAhPSBzdHlsZS0+aW5zaWRlTGluaygpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50TGlua1N0YXRlKCkgIT0gc3R5bGUt
Pmluc2lkZUxpbmsoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0xMDM2LDcgKzEwNDcsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNhblNoYXJlU3R5
bGVXaXRoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1SZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxl
Y3Rvcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQorQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZSogQ1NT
U3R5bGVTZWxlY3Rvcjo6bG9jYXRlU2hhcmVkU3R5bGUoKQogewogICAgIGlmIChtX3N0eWxlZEVs
ZW1lbnQgJiYgIW1fc3R5bGVkRWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkgJiYgIW1fc3R5bGVk
RWxlbWVudC0+aGFzSUQoKSAmJiAhbV9zdHlsZWRFbGVtZW50LT5kb2N1bWVudCgpLT51c2VzU2li
bGluZ1J1bGVzKCkpIHsKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgc2libGluZ3MuCkBAIC0x
MTY5LDcgKzExODAsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9y
CiAKICAgICBpZiAoZS0+aXNMaW5rKCkpIHsKICAgICAgICAgbV9zdHlsZS0+c2V0SXNMaW5rKHRy
dWUpOwotICAgICAgICBtX3N0eWxlLT5zZXRJbnNpZGVMaW5rKG1fY2hlY2tlci5kZXRlcm1pbmVM
aW5rU3RhdGUoZSkpOworICAgICAgICBtX3N0eWxlLT5zZXRJbnNpZGVMaW5rKGN1cnJlbnRFbGVt
ZW50TGlua1N0YXRlKCkpOwogICAgIH0KICAgICAKICAgICBpZiAoc2ltcGxlRGVmYXVsdFN0eWxl
U2hlZXQgJiYgIWVsZW1lbnRDYW5Vc2VTaW1wbGVEZWZhdWx0U3R5bGUoZSkpCkluZGV4OiBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA1ODIyMikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdHJpY3RQYXJzaW5nLCBib29sIG1hdGNoQXV0aG9y
QW5kVXNlclN0eWxlcyk7CiAgICAgICAgIH5DU1NTdHlsZVNlbGVjdG9yKCk7CiAKLSAgICAgICAg
dm9pZCBpbml0RWxlbWVudChFbGVtZW50Kik7CiAgICAgICAgIHZvaWQgaW5pdEZvclN0eWxlUmVz
b2x2ZShFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgUHNldWRvSWQgPSBO
T1BTRVVETyk7CiAgICAgICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlRm9yRWxlbWVu
dChFbGVtZW50KiwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gMCwgYm9vbCBhbGxvd1NoYXJp
bmcgPSB0cnVlLCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCA9IGZhbHNlLCBib29sIG1hdGNo
VmlzaXRlZExpbmtzID0gZmFsc2UpOwogICAgICAgICB2b2lkIGtleWZyYW1lU3R5bGVzRm9yQW5p
bWF0aW9uKEVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIEtleWZyYW1lTGlzdCYgbGlzdCk7
CkBAIC0xMDEsNiArMTAwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBwcml2YXRlOgorICAg
ICAgICB2b2lkIGluaXRFbGVtZW50KEVsZW1lbnQqKTsKICAgICAgICAgUmVuZGVyU3R5bGUqIGxv
Y2F0ZVNoYXJlZFN0eWxlKCk7CiAgICAgICAgIE5vZGUqIGxvY2F0ZUNvdXNpbkxpc3QoRWxlbWVu
dCogcGFyZW50LCB1bnNpZ25lZCBkZXB0aCA9IDEpOwogICAgICAgICBib29sIGNhblNoYXJlU3R5
bGVXaXRoRWxlbWVudChOb2RlKik7CkBAIC0yMDEsNiArMjAxLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9yKiwgUHNldWRv
SWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0OwogCiAgICAgICAgICAgICBFSW5zaWRlTGluayBkZXRl
cm1pbmVMaW5rU3RhdGUoRWxlbWVudCogZWxlbWVudCkgY29uc3Q7CisgICAgICAgICAgICBFSW5z
aWRlTGluayBkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW50KiBlbGVtZW50KSBjb25z
dDsKICAgICAgICAgICAgIHZvaWQgYWxsVmlzaXRlZFN0YXRlQ2hhbmdlZCgpOwogICAgICAgICAg
ICAgdm9pZCB2aXNpdGVkU3RhdGVDaGFuZ2VkKExpbmtIYXNoIHZpc2l0ZWRIYXNoKTsKIApAQCAt
MjUyLDYgKzI1MywxOSBAQCBwdWJsaWM6CiAKICAgICAgICAgU3R5bGVJbWFnZSogc3R5bGVJbWFn
ZShDU1NWYWx1ZSogdmFsdWUpOwogCisKKyAgICAgICAgRUluc2lkZUxpbmsgY3VycmVudEVsZW1l
bnRMaW5rU3RhdGUoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1faGF2ZUNh
Y2hlZExpbmtTdGF0ZSkgeworICAgICAgICAgICAgICAgIG1fY2FjaGVkTGlua1N0YXRlID0gbV9j
aGVja2VyLmRldGVybWluZUxpbmtTdGF0ZShtX2VsZW1lbnQpOworICAgICAgICAgICAgICAgIG1f
aGF2ZUNhY2hlZExpbmtTdGF0ZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gbV9jYWNoZWRMaW5rU3RhdGU7CisgICAgICAgIH0KKworICAgICAgICBtdXRhYmxlIEVJ
bnNpZGVMaW5rIG1fY2FjaGVkTGlua1N0YXRlOworICAgICAgICBtdXRhYmxlIGJvb2wgbV9oYXZl
Q2FjaGVkTGlua1N0YXRlOworCiAgICAgICAgIC8vIFdlIGNvbGxlY3QgdGhlIHNldCBvZiBkZWNs
cyB0aGF0IG1hdGNoIGluIHxtX21hdGNoZWREZWNsc3wuICBXZSB0aGVuIHdhbGsgdGhlCiAgICAg
ICAgIC8vIHNldCBvZiBtYXRjaGVkIGRlY2xzIGZvdXIgdGltZXMsIG9uY2UgZm9yIHRob3NlIHBy
b3BlcnRpZXMgdGhhdCBvdGhlcnMgZGVwZW5kIG9uIChsaWtlIGZvbnQtc2l6ZSksCiAgICAgICAg
IC8vIGFuZCB0aGVuIGEgc2Vjb25kIHRpbWUgZm9yIGFsbCB0aGUgcmVtYWluaW5nIHByb3BlcnRp
ZXMuICBXZSB0aGVuIGRvIHRoZSBzYW1lIHR3byBwYXNzZXMKQEAgLTM0Nyw3ICszNjEsNyBAQCBw
dWJsaWM6CiAgICAgICAgIENTU1J1bGVEYXRhKiBtX2ZpcnN0OwogICAgICAgICBDU1NSdWxlRGF0
YSogbV9sYXN0OwogICAgIH07Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIENTU1N0eWxlU2VsZWN0b3JfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFz
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5jcHAJKHJldmlz
aW9uIDU4MjIyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9MaW5rSGFzaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NywxMiArMTQ3LDE3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBuZWVkc1RyYWlsaW5n
U2xhc2goY28KICAgICByZXR1cm4gcG9zID09IGxlbmd0aDsKIH0KIAorc3RhdGljIEFMV0FZU19J
TkxJTkUgTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoSW5saW5lKGNvbnN0IFVDaGFyKiB1cmwsIHVu
c2lnbmVkIGxlbmd0aCkKK3sKKyAgICByZXR1cm4gQWxyZWFkeUhhc2hlZDo6YXZvaWREZWxldGVk
VmFsdWUoU3RyaW5nSW1wbDo6Y29tcHV0ZUhhc2godXJsLCBsZW5ndGgpKTsKK30KKwogTGlua0hh
c2ggdmlzaXRlZExpbmtIYXNoKGNvbnN0IFVDaGFyKiB1cmwsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
LSAgcmV0dXJuIEFscmVhZHlIYXNoZWQ6OmF2b2lkRGVsZXRlZFZhbHVlKFN0cmluZ0ltcGw6OmNv
bXB1dGVIYXNoKHVybCwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIHZpc2l0ZWRMaW5rSGFzaElubGlu
ZSh1cmwsIGxlbmd0aCk7CiB9CiAKLXZvaWQgdmlzaXRlZFVSTChjb25zdCBLVVJMJiBiYXNlLCBj
b25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCwgVmVjdG9yPFVDaGFyLCA1MTI+JiBidWZm
ZXIpCitzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0ZWRVUkxJbmxpbmUoY29uc3QgS1VS
TCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwsIFZlY3RvcjxVQ2hhciwg
NTEyPiYgYnVmZmVyKQogewogICAgIGlmIChhdHRyaWJ1dGVVUkwuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxMywxNCArMjE4LDE5IEBAIHZvaWQgdmlzaXRlZFVSTChjb25zdCBLVVJM
JiBiYXNlLCBjb25zdCAKICAgICByZXR1cm47CiB9CiAKK3ZvaWQgdmlzaXRlZFVSTChjb25zdCBL
VVJMJiBiYXNlLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCwgVmVjdG9yPFVDaGFy
LCA1MTI+JiBidWZmZXIpCit7CisgICAgcmV0dXJuIHZpc2l0ZWRVUkxJbmxpbmUoYmFzZSwgYXR0
cmlidXRlVVJMLCBidWZmZXIpOworfQorCiBMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2goY29uc3Qg
S1VSTCYgYmFzZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVVUkwpCiB7CiAgICAgVmVj
dG9yPFVDaGFyLCA1MTI+IHVybDsKLSAgICB2aXNpdGVkVVJMKGJhc2UsIGF0dHJpYnV0ZVVSTCwg
dXJsKTsKKyAgICB2aXNpdGVkVVJMSW5saW5lKGJhc2UsIGF0dHJpYnV0ZVVSTCwgdXJsKTsKICAg
ICBpZiAodXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdmlz
aXRlZExpbmtIYXNoKHVybC5kYXRhKCksIHVybC5zaXplKCkpOworICAgIHJldHVybiB2aXNpdGVk
TGlua0hhc2hJbmxpbmUodXJsLmRhdGEoKSwgdXJsLnNpemUoKSk7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="38278"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>