<?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>73961</bug_id>
          
          <creation_ts>2011-12-06 16:28:20 -0800</creation_ts>
          <short_desc>The code to create a NodeListsNodeData is duplicated everywhere</short_desc>
          <delta_ts>2011-12-06 19:17:11 -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>
          
          <blocked>73853</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ap</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>516350</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 16:28:20 -0800</bug_when>
    <thetext>So much code duplication!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516362</commentid>
    <comment_count>1</comment_count>
      <attachid>118139</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 16:44:26 -0800</bug_when>
    <thetext>Created attachment 118139
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516364</commentid>
    <comment_count>2</comment_count>
      <attachid>118139</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 16:45:19 -0800</bug_when>
    <thetext>Comment on attachment 118139
cleanup

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

&gt; Source/WebCore/dom/Node.cpp:1003
&gt; +    if (data &amp;&amp; data-&gt;nodeLists() &amp;&amp; (!treeScope() || !treeScope()-&gt;hasNodeListCaches()))

Oops, I obviously don&apos;t need to check for data here. Will fix before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516376</commentid>
    <comment_count>3</comment_count>
      <attachid>118143</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 16:56:12 -0800</bug_when>
    <thetext>Created attachment 118143
Fixed some bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516394</commentid>
    <comment_count>4</comment_count>
      <attachid>118143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-06 17:17:48 -0800</bug_when>
    <thetext>Comment on attachment 118143
Fixed some bug

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

&gt; Source/WebCore/dom/NodeRareData.h:135
&gt; +            setNodeLists(NodeListsNodeData::create());
&gt; +            if (TreeScope* treeScope = node-&gt;treeScope())
&gt; +                treeScope-&gt;addNodeListCache();

Do we really want this inlined? I would have put this part into a non-inline helper function.

Also, this function is kind of long. Maybe we could put it outside the class definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516400</commentid>
    <comment_count>5</comment_count>
      <attachid>118143</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 17:20:50 -0800</bug_when>
    <thetext>Comment on attachment 118143
Fixed some bug

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

&gt;&gt; Source/WebCore/dom/NodeRareData.h:135
&gt;&gt; +                treeScope-&gt;addNodeListCache();
&gt; 
&gt; Do we really want this inlined? I would have put this part into a non-inline helper function.
&gt; 
&gt; Also, this function is kind of long. Maybe we could put it outside the class definition.

Sure, I can put this in Node.cpp. Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516401</commentid>
    <comment_count>6</comment_count>
      <attachid>118143</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-06 17:22:13 -0800</bug_when>
    <thetext>Comment on attachment 118143
Fixed some bug

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

&gt;&gt;&gt; Source/WebCore/dom/NodeRareData.h:135
&gt;&gt;&gt; +            setNodeLists(NodeListsNodeData::create());
&gt;&gt;&gt; +            if (TreeScope* treeScope = node-&gt;treeScope())
&gt;&gt;&gt; +                treeScope-&gt;addNodeListCache();
&gt;&gt; 
&gt;&gt; Do we really want this inlined? I would have put this part into a non-inline helper function.
&gt;&gt; 
&gt;&gt; Also, this function is kind of long. Maybe we could put it outside the class definition.
&gt; 
&gt; Sure, I can put this in Node.cpp. Thanks for the review.

I meant to apply that comment to all the code inside if (!m_nodeLists)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516403</commentid>
    <comment_count>7</comment_count>
      <attachid>118143</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 17:26:53 -0800</bug_when>
    <thetext>Comment on attachment 118143
Fixed some bug

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/NodeRareData.h:135
&gt;&gt;&gt;&gt; +                treeScope-&gt;addNodeListCache();
&gt;&gt;&gt; 
&gt;&gt;&gt; Do we really want this inlined? I would have put this part into a non-inline helper function.
&gt;&gt;&gt; 
&gt;&gt;&gt; Also, this function is kind of long. Maybe we could put it outside the class definition.
&gt;&gt; 
&gt;&gt; Sure, I can put this in Node.cpp. Thanks for the review.
&gt; 
&gt; I meant to apply that comment to all the code inside if (!m_nodeLists)

Ok. Will add createNodeLists() and put that in Node.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516440</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-06 19:17:11 -0800</bug_when>
    <thetext>Committed r102208: &lt;http://trac.webkit.org/changeset/102208&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118139</attachid>
            <date>2011-12-06 16:44:26 -0800</date>
            <delta_ts>2011-12-06 16:52:40 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-73961-20111206164425.patch</filename>
            <type>text/plain</type>
            <size>9734</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjE4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFRoZSBjb2RlIHRvIGNyZWF0ZSBh
IE5vZGVMaXN0c05vZGVEYXRhIGlzIGR1cGxpY2F0ZWQgZXZlcnl3aGVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5NjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgdGhlIGxvZ2ljIHRv
IGNyZWF0ZSBOb2RlTGlzdHNOb2RlRGF0YSBhcyBOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVMaXN0
cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmNoaWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJE
eW5hbWljTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRh
Z05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKToKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVM
aXN0cyk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmxhYmVscyk6CisKIDIwMTEtMTIt
MDYgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbXBsZW1lbnQgcmVtYWluaW5nIGJvcmRlci1pbWFnZSBhbmQgd2Via2l0LW1hc2tib3gtaW1h
Z2UgcHJvcGVydGllcyBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDEwMjE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNTYsMTcgKzUxNTYsMTMgQEAgRG9jdW1lbnRM
b2FkZXIqIERvY3VtZW50Ojpsb2FkZXIoKSBjb25zdAogI2lmIEVOQUJMRShNSUNST0RBVEEpCiBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0SXRlbXMoY29uc3QgU3RyaW5nJiB0eXBl
TmFtZXMpCiB7Ci0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKLSAg
ICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgIGRhdGEtPnNldE5vZGVMaXN0cyhO
b2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICB0cmVlU2NvcGUoKS0+YWRkTm9k
ZUxpc3RDYWNoZSgpOwotICAgIH0KKyAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9kZUxpc3RzID0g
ZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCk7CiAKICAgICAvLyBTaW5jZSBkb2N1
bWV0LmdldEl0ZW0oKSBpcyBhbGxvd2VkIGZvciBtaWNyb2RhdGEsIHR5cGVOYW1lcyB3aWxsIGJl
IG51bGwgc3RyaW5nLgogICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiB1
bmlxdWUgc3RyaW5nIGlkZW50aWZpZXIgdG8gbWFwIHN1Y2ggcmVxdWVzdCBpbiB0aGUgY2FjaGUu
CiAgICAgU3RyaW5nIGxvY2FsVHlwZU5hbWVzID0gdHlwZU5hbWVzLmlzTnVsbCgpID8gU3RyaW5n
KCJodHRwOi8vd2Via2l0Lm9yZy9taWNyb2RhdGEvdW5kZWZpbmVkSXRlbVR5cGUiKSA6IHR5cGVO
YW1lczsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6Ok1pY3JvRGF0YUl0ZW1MaXN0Q2Fj
aGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkYXRhLT5ub2RlTGlzdHMoKS0+bV9taWNyb0Rh
dGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7CisgICAgcGFpcjxOb2RlTGlz
dHNOb2RlRGF0YTo6TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG5vZGVMaXN0cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1l
cywgMCk7CiAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQogICAgICAgICByZXR1cm4gUGFzc1JlZlB0
cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CShyZXZpc2lvbiAxMDIxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyMywxNiArNjIzLDEwIEBAIHZvaWQgTm9kZTo6c2V0Tm9kZVZhbHVlKGNv
bnN0IFN0cmluZyYgLyoKIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Y2hpbGROb2Rlcygp
CiB7Ci0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKLSAgICBpZiAo
IWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgIGRhdGEtPnNldE5vZGVMaXN0cyhOb2RlTGlz
dHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICBpZiAodHJlZVNjb3BlKCkpCi0gICAgICAg
ICAgICB0cmVlU2NvcGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0KLQotICAgIGlmICgh
ZGF0YS0+bm9kZUxpc3RzKCktPm1fY2hpbGROb2RlTGlzdENhY2hlcykKLSAgICAgICAgZGF0YS0+
bm9kZUxpc3RzKCktPm1fY2hpbGROb2RlTGlzdENhY2hlcyA9IER5bmFtaWNOb2RlTGlzdDo6Q2Fj
aGVzOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gQ2hpbGROb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIGRh
dGEtPm5vZGVMaXN0cygpLT5tX2NoaWxkTm9kZUxpc3RDYWNoZXMuZ2V0KCkpOworICAgIE5vZGVM
aXN0c05vZGVEYXRhKiBub2RlTGlzdHMgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlz
dHModGhpcyk7CisgICAgaWYgKCFub2RlTGlzdHMtPm1fY2hpbGROb2RlTGlzdENhY2hlcykKKyAg
ICAgICAgbm9kZUxpc3RzLT5tX2NoaWxkTm9kZUxpc3RDYWNoZXMgPSBEeW5hbWljTm9kZUxpc3Q6
OkNhY2hlczo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIENoaWxkTm9kZUxpc3Q6OmNyZWF0ZSh0aGlz
LCBub2RlTGlzdHMtPm1fY2hpbGROb2RlTGlzdENhY2hlcy5nZXQoKSk7CiB9CiAKIE5vZGUgKk5v
ZGU6Omxhc3REZXNjZW5kYW50KCkgY29uc3QKQEAgLTEwMDUsMTYgKzk5OSwxMiBAQCB1bnNpZ25l
ZCBOb2RlOjpub2RlSW5kZXgoKSBjb25zdAogdm9pZCBOb2RlOjpyZWdpc3RlckR5bmFtaWNOb2Rl
TGlzdChEeW5hbWljTm9kZUxpc3QqIGxpc3QpCiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0g
ZW5zdXJlUmFyZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAg
IGRhdGEtPnNldE5vZGVMaXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAg
ICB0cmVlU2NvcGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0gZWxzZSBpZiAoIXRyZWVT
Y29wZSgpIHx8ICF0cmVlU2NvcGUoKS0+aGFzTm9kZUxpc3RDYWNoZXMoKSkgewotICAgICAgICAv
LyBXZSBoYXZlbid0IGJlZW4gcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgd2hpbGUgdGhlcmUgd2Vy
ZSBubyByZWdpc3RlcmVkIGxpc3RzLCBzbyB0aGUgY2FjaGUgaXMgaW52YWxpZCBub3cuCisgICAg
Ly8gV2UgaGF2ZW4ndCBiZWVuIHJlY2VpdmluZyBub3RpZmljYXRpb25zIHdoaWxlIHRoZXJlIHdl
cmUgbm8gcmVnaXN0ZXJlZCBsaXN0cywgc28gdGhlIGNhY2hlIGlzIGludmFsaWQgbm93LgorICAg
IGlmIChkYXRhICYmIGRhdGEtPm5vZGVMaXN0cygpICYmICghdHJlZVNjb3BlKCkgfHwgIXRyZWVT
Y29wZSgpLT5oYXNOb2RlTGlzdENhY2hlcygpKSkKICAgICAgICAgZGF0YS0+bm9kZUxpc3RzKCkt
PmludmFsaWRhdGVDYWNoZXMoKTsKLSAgICB9CiAKICAgICBpZiAobGlzdC0+aGFzT3duQ2FjaGVz
KCkpCi0gICAgICAgIGRhdGEtPm5vZGVMaXN0cygpLT5tX2xpc3RzV2l0aENhY2hlcy5hZGQobGlz
dCk7CisgICAgICAgIGRhdGEtPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9saXN0c1dpdGhDYWNo
ZXMuYWRkKGxpc3QpOwogfQogCiB2b2lkIE5vZGU6OnVucmVnaXN0ZXJEeW5hbWljTm9kZUxpc3Qo
RHluYW1pY05vZGVMaXN0KiBsaXN0KQpAQCAtMTY2NywxOSArMTY1NywxMyBAQCBQYXNzUmVmUHRy
PE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5CiAgICAgaWYgKGxvY2FsTmFtZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBlbnN1cmVS
YXJlRGF0YSgpOwotICAgIGlmICghZGF0YS0+bm9kZUxpc3RzKCkpIHsKLSAgICAgICAgZGF0YS0+
c2V0Tm9kZUxpc3RzKE5vZGVMaXN0c05vZGVEYXRhOjpjcmVhdGUoKSk7Ci0gICAgICAgIHRyZWVT
Y29wZSgpLT5hZGROb2RlTGlzdENhY2hlKCk7Ci0gICAgfQotCiAgICAgU3RyaW5nIG5hbWUgPSBs
b2NhbE5hbWU7CiAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCiAgICAgICAg
IG5hbWUgPSBsb2NhbE5hbWUubG93ZXIoKTsKIAogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWVB
dG9tID0gbmFtZTsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVMaXN0Q2Fj
aGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkYXRhLT5ub2RlTGlzdHMoKS0+bV90YWdOb2Rl
TGlzdENhY2hlLmFkZChsb2NhbE5hbWVBdG9tLCAwKTsKKyAgICBwYWlyPE5vZGVMaXN0c05vZGVE
YXRhOjpUYWdOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZW5zdXJlUmFy
ZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX3RhZ05vZGVMaXN0Q2FjaGUuYWRkKGxv
Y2FsTmFtZUF0b20sIDApOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkKICAgICAgICAgcmV0dXJu
IFBhc3NSZWZQdHI8VGFnTm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKIApAQCAtMTY5
NiwxOSArMTY4MCwxNCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5
CiAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBzdGFyQXRvbSkKICAgICAgICAgcmV0dXJuIGdldEVs
ZW1lbnRzQnlUYWdOYW1lKGxvY2FsTmFtZSk7CiAKLSAgICBOb2RlUmFyZURhdGEqIGRhdGEgPSBl
bnN1cmVSYXJlRGF0YSgpOwotICAgIGlmICghZGF0YS0+bm9kZUxpc3RzKCkpIHsKLSAgICAgICAg
ZGF0YS0+c2V0Tm9kZUxpc3RzKE5vZGVMaXN0c05vZGVEYXRhOjpjcmVhdGUoKSk7Ci0gICAgICAg
IHRyZWVTY29wZSgpLT5hZGROb2RlTGlzdENhY2hlKCk7Ci0gICAgfQotCiAgICAgU3RyaW5nIG5h
bWUgPSBsb2NhbE5hbWU7CiAgICAgaWYgKGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCiAg
ICAgICAgIG5hbWUgPSBsb2NhbE5hbWUubG93ZXIoKTsKIAogICAgIEF0b21pY1N0cmluZyBsb2Nh
bE5hbWVBdG9tID0gbmFtZTsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OlRhZ05vZGVM
aXN0Q2FjaGVOUzo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRhdGEtPm5vZGVMaXN0cygpLT5t
X3RhZ05vZGVMaXN0Q2FjaGVOUy5hZGQoUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1l
QXRvbSwgbmFtZXNwYWNlVVJJKS5pbXBsKCksIDApOworICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURh
dGE6OlRhZ05vZGVMaXN0Q2FjaGVOUzo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdAorICAgICAgICA9
IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV90YWdOb2RlTGlzdENh
Y2hlTlMuYWRkKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZUF0b20sIG5hbWVzcGFj
ZVVSSSkuaW1wbCgpLCAwKTsKICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCiAgICAgICAgIHJldHVy
biBQYXNzUmVmUHRyPFRhZ05vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CiAKQEAgLTE3
MTksMTMgKzE2OTgsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5
CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudE5hbWUpCiB7Ci0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFy
ZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgIGRhdGEtPnNl
dE5vZGVMaXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICB0cmVlU2Nv
cGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0KLQotICAgIHBhaXI8Tm9kZUxpc3RzTm9k
ZURhdGE6Ok5hbWVOb2RlTGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gZGF0YS0+
bm9kZUxpc3RzKCktPm1fbmFtZU5vZGVMaXN0Q2FjaGUuYWRkKGVsZW1lbnROYW1lLCAwKTsKKyAg
ICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpOYW1lTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJv
b2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRhKCktPmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9u
YW1lTm9kZUxpc3RDYWNoZS5hZGQoZWxlbWVudE5hbWUsIDApOwogICAgIGlmICghcmVzdWx0LnNl
Y29uZCkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+
c2Vjb25kKTsKIApAQCAtMTczNiwxMyArMTcwOSw4IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5v
ZGU6OmdldEVsZW1lbnRzQnkKIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVu
dHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZXMpCiB7Ci0gICAgTm9kZVJhcmVE
YXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygp
KSB7Ci0gICAgICAgIGRhdGEtPnNldE5vZGVMaXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRl
KCkpOwotICAgICAgICB0cmVlU2NvcGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0KLQot
ICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OkNsYXNzTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IGRhdGEtPm5vZGVMaXN0cygpLT5tX2NsYXNzTm9kZUxpc3RDYWNoZS5h
ZGQoY2xhc3NOYW1lcywgMCk7CisgICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6Q2xhc3NOb2Rl
TGlzdENhY2hlOjppdGVyYXRvciwgYm9vbD4gcmVzdWx0CisgICAgICAgID0gZW5zdXJlUmFyZURh
dGEoKS0+ZW5zdXJlTm9kZUxpc3RzKHRoaXMpLT5tX2NsYXNzTm9kZUxpc3RDYWNoZS5hZGQoY2xh
c3NOYW1lcywgMCk7CiAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQogICAgICAgICByZXR1cm4gUGFz
c1JlZlB0cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oCShyZXZpc2lvbiAxMDIxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJhcmVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsMTUgQEAgcHVi
bGljOiAgICAKICAgICB2b2lkIGNsZWFyTm9kZUxpc3RzKCkgeyBtX25vZGVMaXN0cy5jbGVhcigp
OyB9CiAgICAgdm9pZCBzZXROb2RlTGlzdHMoUGFzc093blB0cjxOb2RlTGlzdHNOb2RlRGF0YT4g
bGlzdHMpIHsgbV9ub2RlTGlzdHMgPSBsaXN0czsgfQogICAgIE5vZGVMaXN0c05vZGVEYXRhKiBu
b2RlTGlzdHMoKSBjb25zdCB7IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsgfQorICAgIE5vZGVM
aXN0c05vZGVEYXRhKiBlbnN1cmVOb2RlTGlzdHMoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAg
IEFTU0VSVChub2RlKTsKKyAgICAgICAgaWYgKCFtX25vZGVMaXN0cykgeworICAgICAgICAgICAg
c2V0Tm9kZUxpc3RzKE5vZGVMaXN0c05vZGVEYXRhOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBu
b2RlLT50cmVlU2NvcGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBtX25vZGVMaXN0cy5nZXQoKTsKKyAgICB9CiAKICAgICBzaG9ydCB0YWJJbmRleCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFiSW5kZXg7IH0KICAgICB2b2lkIHNldFRhYkluZGV4RXhwbGlj
aXRseShzaG9ydCBpbmRleCkgeyBtX3RhYkluZGV4ID0gaW5kZXg7IG1fdGFiSW5kZXhXYXNTZXRF
eHBsaWNpdGx5ID0gdHJ1ZTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDIxODMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTIs
MTcgKzQ5MiwxMiBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBIVE1MRm9ybUNvbnRyb2xFbGVtCiAg
ICAgaWYgKCFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIE5vZGVSYXJlRGF0
YSogZGF0YSA9IE5vZGU6OmVuc3VyZVJhcmVEYXRhKCk7Ci0gICAgaWYgKCFkYXRhLT5ub2RlTGlz
dHMoKSkgewotICAgICAgICBkYXRhLT5zZXROb2RlTGlzdHMoTm9kZUxpc3RzTm9kZURhdGE6OmNy
ZWF0ZSgpKTsKLSAgICAgICAgdHJlZVNjb3BlKCktPmFkZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICB9
Ci0KLSAgICBpZiAoZGF0YS0+bm9kZUxpc3RzKCktPm1fbGFiZWxzTm9kZUxpc3RDYWNoZSkKLSAg
ICAgICAgcmV0dXJuIGRhdGEtPm5vZGVMaXN0cygpLT5tX2xhYmVsc05vZGVMaXN0Q2FjaGU7Cisg
ICAgTm9kZUxpc3RzTm9kZURhdGEqIG5vZGVMaXN0cyA9IE5vZGU6OmVuc3VyZVJhcmVEYXRhKCkt
PmVuc3VyZU5vZGVMaXN0cyh0aGlzKTsKKyAgICBpZiAobm9kZUxpc3RzLT5tX2xhYmVsc05vZGVM
aXN0Q2FjaGUpCisgICAgICAgIHJldHVybiBub2RlTGlzdHMtPm1fbGFiZWxzTm9kZUxpc3RDYWNo
ZTsKIAogICAgIFJlZlB0cjxMYWJlbHNOb2RlTGlzdD4gbGlzdCA9IExhYmVsc05vZGVMaXN0Ojpj
cmVhdGUodGhpcyk7Ci0gICAgZGF0YS0+bm9kZUxpc3RzKCktPm1fbGFiZWxzTm9kZUxpc3RDYWNo
ZSA9IGxpc3QuZ2V0KCk7CisgICAgbm9kZUxpc3RzLT5tX2xhYmVsc05vZGVMaXN0Q2FjaGUgPSBs
aXN0LmdldCgpOwogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118143</attachid>
            <date>2011-12-06 16:56:12 -0800</date>
            <delta_ts>2011-12-06 17:26:53 -0800</delta_ts>
            <desc>Fixed some bug</desc>
            <filename>bug-73961-20111206165611.patch</filename>
            <type>text/plain</type>
            <size>9781</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjE4OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFRoZSBjb2RlIHRvIGNyZWF0ZSBh
IE5vZGVMaXN0c05vZGVEYXRhIGlzIGR1cGxpY2F0ZWQgZXZlcnl3aGVyZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5NjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgdGhlIGxvZ2ljIHRv
IGNyZWF0ZSBOb2RlTGlzdHNOb2RlRGF0YSBhcyBOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVMaXN0
cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Z2V0SXRlbXMpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmNoaWxkTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6cmVnaXN0ZXJE
eW5hbWljTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRh
Z05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Z2V0RWxlbWVudHNCeVRhZ05hbWVOUyk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5TmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKToKKyAgICAgICAgKiBkb20vTm9k
ZVJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZU5vZGVM
aXN0cyk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmxhYmVscyk6CisKIDIwMTEtMTIt
MDYgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBJbXBsZW1lbnQgcmVtYWluaW5nIGJvcmRlci1pbWFnZSBhbmQgd2Via2l0LW1hc2tib3gtaW1h
Z2UgcHJvcGVydGllcyBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDEwMjE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNTYsMTcgKzUxNTYsMTMgQEAgRG9jdW1lbnRM
b2FkZXIqIERvY3VtZW50Ojpsb2FkZXIoKSBjb25zdAogI2lmIEVOQUJMRShNSUNST0RBVEEpCiBQ
YXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0SXRlbXMoY29uc3QgU3RyaW5nJiB0eXBl
TmFtZXMpCiB7Ci0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKLSAg
ICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgIGRhdGEtPnNldE5vZGVMaXN0cyhO
b2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICB0cmVlU2NvcGUoKS0+YWRkTm9k
ZUxpc3RDYWNoZSgpOwotICAgIH0KKyAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9kZUxpc3RzID0g
ZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9kZUxpc3RzKCk7CiAKICAgICAvLyBTaW5jZSBkb2N1
bWV0LmdldEl0ZW0oKSBpcyBhbGxvd2VkIGZvciBtaWNyb2RhdGEsIHR5cGVOYW1lcyB3aWxsIGJl
IG51bGwgc3RyaW5nLgogICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIGNyZWF0ZSBhbiB1
bmlxdWUgc3RyaW5nIGlkZW50aWZpZXIgdG8gbWFwIHN1Y2ggcmVxdWVzdCBpbiB0aGUgY2FjaGUu
CiAgICAgU3RyaW5nIGxvY2FsVHlwZU5hbWVzID0gdHlwZU5hbWVzLmlzTnVsbCgpID8gU3RyaW5n
KCJodHRwOi8vd2Via2l0Lm9yZy9taWNyb2RhdGEvdW5kZWZpbmVkSXRlbVR5cGUiKSA6IHR5cGVO
YW1lczsKIAotICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6Ok1pY3JvRGF0YUl0ZW1MaXN0Q2Fj
aGU6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkYXRhLT5ub2RlTGlzdHMoKS0+bV9taWNyb0Rh
dGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1lcywgMCk7CisgICAgcGFpcjxOb2RlTGlz
dHNOb2RlRGF0YTo6TWljcm9EYXRhSXRlbUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3Vs
dCA9IG5vZGVMaXN0cy0+bV9taWNyb0RhdGFJdGVtTGlzdENhY2hlLmFkZChsb2NhbFR5cGVOYW1l
cywgMCk7CiAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQogICAgICAgICByZXR1cm4gUGFzc1JlZlB0
cjxOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CShyZXZpc2lvbiAxMDIxODMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYyMywxNiArNjIzLDEwIEBAIHZvaWQgTm9kZTo6c2V0Tm9kZVZhbHVlKGNv
bnN0IFN0cmluZyYgLyoKIAogUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Y2hpbGROb2Rlcygp
CiB7Ci0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEoKTsKLSAgICBpZiAo
IWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgIGRhdGEtPnNldE5vZGVMaXN0cyhOb2RlTGlz
dHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICBpZiAodHJlZVNjb3BlKCkpCi0gICAgICAg
ICAgICB0cmVlU2NvcGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0KLQotICAgIGlmICgh
ZGF0YS0+bm9kZUxpc3RzKCktPm1fY2hpbGROb2RlTGlzdENhY2hlcykKLSAgICAgICAgZGF0YS0+
bm9kZUxpc3RzKCktPm1fY2hpbGROb2RlTGlzdENhY2hlcyA9IER5bmFtaWNOb2RlTGlzdDo6Q2Fj
aGVzOjpjcmVhdGUoKTsKLSAgICByZXR1cm4gQ2hpbGROb2RlTGlzdDo6Y3JlYXRlKHRoaXMsIGRh
dGEtPm5vZGVMaXN0cygpLT5tX2NoaWxkTm9kZUxpc3RDYWNoZXMuZ2V0KCkpOworICAgIE5vZGVM
aXN0c05vZGVEYXRhKiBub2RlTGlzdHMgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlz
dHModGhpcyk7CisgICAgaWYgKCFub2RlTGlzdHMtPm1fY2hpbGROb2RlTGlzdENhY2hlcykKKyAg
ICAgICAgbm9kZUxpc3RzLT5tX2NoaWxkTm9kZUxpc3RDYWNoZXMgPSBEeW5hbWljTm9kZUxpc3Q6
OkNhY2hlczo6Y3JlYXRlKCk7CisgICAgcmV0dXJuIENoaWxkTm9kZUxpc3Q6OmNyZWF0ZSh0aGlz
LCBub2RlTGlzdHMtPm1fY2hpbGROb2RlTGlzdENhY2hlcy5nZXQoKSk7CiB9CiAKIE5vZGUgKk5v
ZGU6Omxhc3REZXNjZW5kYW50KCkgY29uc3QKQEAgLTEwMDUsMTYgKzk5OSwxMiBAQCB1bnNpZ25l
ZCBOb2RlOjpub2RlSW5kZXgoKSBjb25zdAogdm9pZCBOb2RlOjpyZWdpc3RlckR5bmFtaWNOb2Rl
TGlzdChEeW5hbWljTm9kZUxpc3QqIGxpc3QpCiB7CiAgICAgTm9kZVJhcmVEYXRhKiBkYXRhID0g
ZW5zdXJlUmFyZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAg
IGRhdGEtPnNldE5vZGVMaXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAg
ICB0cmVlU2NvcGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0gZWxzZSBpZiAoIXRyZWVT
Y29wZSgpIHx8ICF0cmVlU2NvcGUoKS0+aGFzTm9kZUxpc3RDYWNoZXMoKSkgewotICAgICAgICAv
LyBXZSBoYXZlbid0IGJlZW4gcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMgd2hpbGUgdGhlcmUgd2Vy
ZSBubyByZWdpc3RlcmVkIGxpc3RzLCBzbyB0aGUgY2FjaGUgaXMgaW52YWxpZCBub3cuCisgICAg
Ly8gV2UgaGF2ZW4ndCBiZWVuIHJlY2VpdmluZyBub3RpZmljYXRpb25zIHdoaWxlIHRoZXJlIHdl
cmUgbm8gcmVnaXN0ZXJlZCBsaXN0cywgc28gdGhlIGNhY2hlIGlzIGludmFsaWQgbm93LgorICAg
IGlmIChkYXRhLT5ub2RlTGlzdHMoKSAmJiAoIXRyZWVTY29wZSgpIHx8ICF0cmVlU2NvcGUoKS0+
aGFzTm9kZUxpc3RDYWNoZXMoKSkpCiAgICAgICAgIGRhdGEtPm5vZGVMaXN0cygpLT5pbnZhbGlk
YXRlQ2FjaGVzKCk7Ci0gICAgfQogCiAgICAgaWYgKGxpc3QtPmhhc093bkNhY2hlcygpKQotICAg
ICAgICBkYXRhLT5ub2RlTGlzdHMoKS0+bV9saXN0c1dpdGhDYWNoZXMuYWRkKGxpc3QpOworICAg
ICAgICBkYXRhLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fbGlzdHNXaXRoQ2FjaGVzLmFkZChs
aXN0KTsKIH0KIAogdm9pZCBOb2RlOjp1bnJlZ2lzdGVyRHluYW1pY05vZGVMaXN0KER5bmFtaWNO
b2RlTGlzdCogbGlzdCkKQEAgLTE2NjcsMTkgKzE2NTcsMTMgQEAgUGFzc1JlZlB0cjxOb2RlTGlz
dD4gTm9kZTo6Z2V0RWxlbWVudHNCeQogICAgIGlmIChsb2NhbE5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFyZURhdGEo
KTsKLSAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgIGRhdGEtPnNldE5vZGVM
aXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICB0cmVlU2NvcGUoKS0+
YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0KLQogICAgIFN0cmluZyBuYW1lID0gbG9jYWxOYW1l
OwogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBuYW1lID0g
bG9jYWxOYW1lLmxvd2VyKCk7CiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRvbSA9IG5h
bWU7CiAKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hlOjppdGVy
YXRvciwgYm9vbD4gcmVzdWx0ID0gZGF0YS0+bm9kZUxpc3RzKCktPm1fdGFnTm9kZUxpc3RDYWNo
ZS5hZGQobG9jYWxOYW1lQXRvbSwgMCk7CisgICAgcGFpcjxOb2RlTGlzdHNOb2RlRGF0YTo6VGFn
Tm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGVuc3VyZVJhcmVEYXRhKCkt
PmVuc3VyZU5vZGVMaXN0cyh0aGlzKS0+bV90YWdOb2RlTGlzdENhY2hlLmFkZChsb2NhbE5hbWVB
dG9tLCAwKTsKICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCiAgICAgICAgIHJldHVybiBQYXNzUmVm
UHRyPFRhZ05vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7CiAKQEAgLTE2OTYsMTkgKzE2
ODAsMTQgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeQogICAgIGlm
IChuYW1lc3BhY2VVUkkgPT0gc3RhckF0b20pCiAgICAgICAgIHJldHVybiBnZXRFbGVtZW50c0J5
VGFnTmFtZShsb2NhbE5hbWUpOwogCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0gZW5zdXJlUmFy
ZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0gICAgICAgIGRhdGEtPnNl
dE5vZGVMaXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwotICAgICAgICB0cmVlU2Nv
cGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0KLQogICAgIFN0cmluZyBuYW1lID0gbG9j
YWxOYW1lOwogICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICBu
YW1lID0gbG9jYWxOYW1lLmxvd2VyKCk7CiAKICAgICBBdG9taWNTdHJpbmcgbG9jYWxOYW1lQXRv
bSA9IG5hbWU7CiAKLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpUYWdOb2RlTGlzdENhY2hl
TlM6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBkYXRhLT5ub2RlTGlzdHMoKS0+bV90YWdOb2Rl
TGlzdENhY2hlTlMuYWRkKFF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZUF0b20sIG5h
bWVzcGFjZVVSSSkuaW1wbCgpLCAwKTsKKyAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpUYWdO
b2RlTGlzdENhY2hlTlM6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQKKyAgICAgICAgPSBlbnN1cmVS
YXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fdGFnTm9kZUxpc3RDYWNoZU5TLmFk
ZChRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBsb2NhbE5hbWVBdG9tLCBuYW1lc3BhY2VVUkkpLmlt
cGwoKSwgMCk7CiAgICAgaWYgKCFyZXN1bHQuc2Vjb25kKQogICAgICAgICByZXR1cm4gUGFzc1Jl
ZlB0cjxUYWdOb2RlTGlzdD4ocmVzdWx0LmZpcnN0LT5zZWNvbmQpOwogCkBAIC0xNzE5LDEzICsx
Njk4LDcgQEAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gTm9kZTo6Z2V0RWxlbWVudHNCeQogCiBQYXNz
UmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRFbGVtZW50c0J5TmFtZShjb25zdCBTdHJpbmcmIGVs
ZW1lbnROYW1lKQogewotICAgIE5vZGVSYXJlRGF0YSogZGF0YSA9IGVuc3VyZVJhcmVEYXRhKCk7
Ci0gICAgaWYgKCFkYXRhLT5ub2RlTGlzdHMoKSkgewotICAgICAgICBkYXRhLT5zZXROb2RlTGlz
dHMoTm9kZUxpc3RzTm9kZURhdGE6OmNyZWF0ZSgpKTsKLSAgICAgICAgdHJlZVNjb3BlKCktPmFk
ZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICB9Ci0KLSAgICBwYWlyPE5vZGVMaXN0c05vZGVEYXRhOjpO
YW1lTm9kZUxpc3RDYWNoZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IGRhdGEtPm5vZGVMaXN0
cygpLT5tX25hbWVOb2RlTGlzdENhY2hlLmFkZChlbGVtZW50TmFtZSwgMCk7CisgICAgcGFpcjxO
b2RlTGlzdHNOb2RlRGF0YTo6TmFtZU5vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiByZXN1
bHQgPSBlbnN1cmVSYXJlRGF0YSgpLT5lbnN1cmVOb2RlTGlzdHModGhpcyktPm1fbmFtZU5vZGVM
aXN0Q2FjaGUuYWRkKGVsZW1lbnROYW1lLCAwKTsKICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCiAg
ICAgICAgIHJldHVybiBQYXNzUmVmUHRyPE5vZGVMaXN0PihyZXN1bHQuZmlyc3QtPnNlY29uZCk7
CiAKQEAgLTE3MzYsMTMgKzE3MDksOCBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBOb2RlOjpnZXRF
bGVtZW50c0J5CiAKIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IE5vZGU6OmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWVzKQogewotICAgIE5vZGVSYXJlRGF0YSogZGF0
YSA9IGVuc3VyZVJhcmVEYXRhKCk7Ci0gICAgaWYgKCFkYXRhLT5ub2RlTGlzdHMoKSkgewotICAg
ICAgICBkYXRhLT5zZXROb2RlTGlzdHMoTm9kZUxpc3RzTm9kZURhdGE6OmNyZWF0ZSgpKTsKLSAg
ICAgICAgdHJlZVNjb3BlKCktPmFkZE5vZGVMaXN0Q2FjaGUoKTsKLSAgICB9Ci0KLSAgICBwYWly
PE5vZGVMaXN0c05vZGVEYXRhOjpDbGFzc05vZGVMaXN0Q2FjaGU6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBkYXRhLT5ub2RlTGlzdHMoKS0+bV9jbGFzc05vZGVMaXN0Q2FjaGUuYWRkKGNsYXNz
TmFtZXMsIDApOworICAgIHBhaXI8Tm9kZUxpc3RzTm9kZURhdGE6OkNsYXNzTm9kZUxpc3RDYWNo
ZTo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdAorICAgICAgICA9IGVuc3VyZVJhcmVEYXRhKCktPmVu
c3VyZU5vZGVMaXN0cyh0aGlzKS0+bV9jbGFzc05vZGVMaXN0Q2FjaGUuYWRkKGNsYXNzTmFtZXMs
IDApOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8
Tm9kZUxpc3Q+KHJlc3VsdC5maXJzdC0+c2Vjb25kKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL05vZGVSYXJlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
UmFyZURhdGEuaAkocmV2aXNpb24gMTAyMTgzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGVS
YXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNiArMTI2LDE2IEBAIHB1YmxpYzogICAg
CiAgICAgdm9pZCBjbGVhck5vZGVMaXN0cygpIHsgbV9ub2RlTGlzdHMuY2xlYXIoKTsgfQogICAg
IHZvaWQgc2V0Tm9kZUxpc3RzKFBhc3NPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IGxpc3RzKSB7
IG1fbm9kZUxpc3RzID0gbGlzdHM7IH0KICAgICBOb2RlTGlzdHNOb2RlRGF0YSogbm9kZUxpc3Rz
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlTGlzdHMuZ2V0KCk7IH0KKyAgICBOb2RlTGlzdHNOb2Rl
RGF0YSogZW5zdXJlTm9kZUxpc3RzKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBBU1NFUlQo
bm9kZSk7CisgICAgICAgIGlmICghbV9ub2RlTGlzdHMpIHsKKyAgICAgICAgICAgIHNldE5vZGVM
aXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOworICAgICAgICAgICAgaWYgKFRyZWVT
Y29wZSogdHJlZVNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCkpCisgICAgICAgICAgICAgICAgdHJl
ZVNjb3BlLT5hZGROb2RlTGlzdENhY2hlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1f
bm9kZUxpc3RzLmdldCgpOworICAgIH0KIAogICAgIHNob3J0IHRhYkluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV90YWJJbmRleDsgfQogICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHNob3J0
IGluZGV4KSB7IG1fdGFiSW5kZXggPSBpbmRleDsgbV90YWJJbmRleFdhc1NldEV4cGxpY2l0bHkg
PSB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAJKHJldmlzaW9uIDEwMjE4MykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MiwxNyArNDkyLDEy
IEBAIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IEhUTUxGb3JtQ29udHJvbEVsZW0KICAgICBpZiAoIWRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgTm9kZVJhcmVEYXRhKiBkYXRhID0g
Tm9kZTo6ZW5zdXJlUmFyZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm5vZGVMaXN0cygpKSB7Ci0g
ICAgICAgIGRhdGEtPnNldE5vZGVMaXN0cyhOb2RlTGlzdHNOb2RlRGF0YTo6Y3JlYXRlKCkpOwot
ICAgICAgICB0cmVlU2NvcGUoKS0+YWRkTm9kZUxpc3RDYWNoZSgpOwotICAgIH0KLQotICAgIGlm
IChkYXRhLT5ub2RlTGlzdHMoKS0+bV9sYWJlbHNOb2RlTGlzdENhY2hlKQotICAgICAgICByZXR1
cm4gZGF0YS0+bm9kZUxpc3RzKCktPm1fbGFiZWxzTm9kZUxpc3RDYWNoZTsKKyAgICBOb2RlTGlz
dHNOb2RlRGF0YSogbm9kZUxpc3RzID0gTm9kZTo6ZW5zdXJlUmFyZURhdGEoKS0+ZW5zdXJlTm9k
ZUxpc3RzKHRoaXMpOworICAgIGlmIChub2RlTGlzdHMtPm1fbGFiZWxzTm9kZUxpc3RDYWNoZSkK
KyAgICAgICAgcmV0dXJuIG5vZGVMaXN0cy0+bV9sYWJlbHNOb2RlTGlzdENhY2hlOwogCiAgICAg
UmVmUHRyPExhYmVsc05vZGVMaXN0PiBsaXN0ID0gTGFiZWxzTm9kZUxpc3Q6OmNyZWF0ZSh0aGlz
KTsKLSAgICBkYXRhLT5ub2RlTGlzdHMoKS0+bV9sYWJlbHNOb2RlTGlzdENhY2hlID0gbGlzdC5n
ZXQoKTsKKyAgICBub2RlTGlzdHMtPm1fbGFiZWxzTm9kZUxpc3RDYWNoZSA9IGxpc3QuZ2V0KCk7
CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCg==
</data>
<flag name="review"
          id="117798"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>