<?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>126684</bug_id>
          
          <creation_ts>2014-01-09 01:54:45 -0800</creation_ts>
          <short_desc>Switch HTMLTableRowsCollection from Traversal&lt;&gt; to iterators</short_desc>
          <delta_ts>2014-01-09 08:39:07 -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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>965802</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-09 01:54:45 -0800</bug_when>
    <thetext>This is the last remaining client of Traversal&lt;&gt; outside the iterator implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965809</commentid>
    <comment_count>1</comment_count>
      <attachid>220705</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-09 02:09:28 -0800</bug_when>
    <thetext>Created attachment 220705
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965810</commentid>
    <comment_count>2</comment_count>
      <attachid>220705</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-01-09 02:13:27 -0800</bug_when>
    <thetext>Comment on attachment 220705
patch

Very snug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965814</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-09 02:17:06 -0800</bug_when>
    <thetext>https://trac.webkit.org/r161551</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965893</commentid>
    <comment_count>4</comment_count>
      <attachid>220705</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-09 07:42:39 -0800</bug_when>
    <thetext>Comment on attachment 220705
patch

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

&gt; Source/WebCore/dom/ElementChildIterator.h:160
&gt; +    if (!isElementOfType&lt;const ElementType&gt;(child))
&gt; +        return end();

If this element is a child of m_parent, just not the correct type, I would expect this function to return the next child of the correct type if any, not always end().

A way to avoid this problem entirely would be to make the argument be ElementType&amp; instead of const Element&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965895</commentid>
    <comment_count>5</comment_count>
      <attachid>220705</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-09 07:44:27 -0800</bug_when>
    <thetext>Comment on attachment 220705
patch

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

&gt;&gt; Source/WebCore/dom/ElementChildIterator.h:160
&gt;&gt; +        return end();
&gt; 
&gt; If this element is a child of m_parent, just not the correct type, I would expect this function to return the next child of the correct type if any, not always end().
&gt; 
&gt; A way to avoid this problem entirely would be to make the argument be ElementType&amp; instead of const Element&amp;.

I guess I’m wrong. We are using end() here as a sort of null value.

But I do think that we should have a find that takes the specific element type to avoid the runtime isElementOfType check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965896</commentid>
    <comment_count>6</comment_count>
      <attachid>220705</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-01-09 07:45:18 -0800</bug_when>
    <thetext>Comment on attachment 220705
patch

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

&gt;&gt;&gt; Source/WebCore/dom/ElementChildIterator.h:160
&gt;&gt;&gt; +        return end();
&gt;&gt; 
&gt;&gt; If this element is a child of m_parent, just not the correct type, I would expect this function to return the next child of the correct type if any, not always end().
&gt;&gt; 
&gt;&gt; A way to avoid this problem entirely would be to make the argument be ElementType&amp; instead of const Element&amp;.
&gt; 
&gt; I guess I’m wrong. We are using end() here as a sort of null value.
&gt; 
&gt; But I do think that we should have a find that takes the specific element type to avoid the runtime isElementOfType check.

I guess I really don’t like find for the name of this. It sounds like something that iterates the children, when really it’s just a sort of alternate iterator constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>965920</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-09 08:39:07 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I guess I really don’t like find for the name of this. It sounds like something that iterates the children, when really it’s just a sort of alternate iterator constructor.

I mostly added it because we had find like this already in ElementDescendantIteratorAdapter. I agree that it is a silly name and should be replaced with a constructor function. I don&apos;t want to call constructors explicitly from regular code though. Maybe FooAdapter::iteratorFor(ElementType&amp;)?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>220705</attachid>
            <date>2014-01-09 02:09:28 -0800</date>
            <delta_ts>2014-01-09 07:45:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>last-traversal-template.patch</filename>
            <type>text/plain</type>
            <size>7247</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MTU1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE0LTAxLTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTd2l0Y2ggSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24gZnJvbSBUcmF2ZXJzYWw8PiB0byBpdGVyYXRvcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNjY4NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGxhc3QgcmVtYWlu
aW5nIGNsaWVudCBvZiBUcmF2ZXJzYWw8PiBvdXRzaWRlIHRoZSBpdGVyYXRvciBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICAqIGRvbS9FbGVtZW50Q2hpbGRJdGVyYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudENoaWxkSXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZmluZCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmZpbmQpOgorICAgICAgICAKKyAgICAgICAgICAgIEFkZCBmaW5kIHdpdGggdGhl
IHNhbWUgc2VtYW50aWNzIGFzIEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I6OmZpbmQuCisKKyAg
ICAgICAgKiBodG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjpyb3dBZnRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6bGFzdFJvdyk6CisKIDIwMTQtMDEtMDggIENhcmxv
cyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjE2MTE3Nik6IGh0dHAvdGVzdHMvbWlzYy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC0zL2F1
dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJlY3Qtc2FtZS1vcmlnaW4td2l0aC1sb2NhdGlvbi1j
cmVkZW50aWFscy5odG1sIGlzIGZhaWxpbmcgb24gR1RLCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudENoaWxkSXRlcmF0b3IuaAkocmV2aXNpb24gMTYxNDgzKQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRDaGlsZEl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDgg
KzUwLDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGNsYXNzIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yQWRhcHRlciB7CiBwdWJsaWM6CiAgICAgRWxlbWVudENoaWxkSXRlcmF0b3JB
ZGFwdGVyKENvbnRhaW5lck5vZGUmIHBhcmVudCk7CisKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRv
cjxFbGVtZW50VHlwZT4gYmVnaW4oKTsKICAgICBFbGVtZW50Q2hpbGRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gZW5kKCk7CisgICAgRWxlbWVudENoaWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IGZpbmQo
RWxlbWVudCYpOworCiAgICAgRWxlbWVudFR5cGUqIGZpcnN0KCk7CiAgICAgRWxlbWVudFR5cGUq
IGxhc3QoKTsKIApAQCAtNjMsOCArNjYsMTEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRU
eXBlPgogY2xhc3MgRWxlbWVudENoaWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIgewogcHVibGljOgog
ICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3JBZGFwdGVyKGNvbnN0IENvbnRhaW5lck5vZGUm
IHBhcmVudCk7CisKICAgICBFbGVtZW50Q2hpbGRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBi
ZWdpbigpIGNvbnN0OwogICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
IGVuZCgpIGNvbnN0OworICAgIEVsZW1lbnRDaGlsZENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+
IGZpbmQoY29uc3QgRWxlbWVudCYpIGNvbnN0OworCiAgICAgY29uc3QgRWxlbWVudFR5cGUqIGZp
cnN0KCkgY29uc3Q7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIGxhc3QoKSBjb25zdDsKIApAQCAt
MTQ3LDYgKzE1MywxNiBAQCBpbmxpbmUgRWxlbWVudFR5cGUqIEVsZW1lbnRDaGlsZEl0ZXJhdG9y
CiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZCgmbV9wYXJlbnQp
OwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxlbWVudENo
aWxkSXRlcmF0b3I8RWxlbWVudFR5cGU+IEVsZW1lbnRDaGlsZEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmZpbmQoRWxlbWVudCYgY2hpbGQpCit7CisgICAgaWYgKCFpc0VsZW1lbnRPZlR5
cGU8Y29uc3QgRWxlbWVudFR5cGU+KGNoaWxkKSkKKyAgICAgICAgcmV0dXJuIGVuZCgpOworICAg
IGlmIChjaGlsZC5wYXJlbnROb2RlKCkgIT0gJm1fcGFyZW50KQorICAgICAgICByZXR1cm4gZW5k
KCk7CisgICAgcmV0dXJuIEVsZW1lbnRDaGlsZEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVu
dCwgc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPigmY2hpbGQpKTsKK30KKwogLy8gRWxlbWVudENo
aWxkQ29uc3RJdGVyYXRvckFkYXB0ZXIKIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBl
PgpAQCAtMTc5LDYgKzE5NSwxNiBAQCBpbmxpbmUgY29uc3QgRWxlbWVudFR5cGUqIEVsZW1lbnRD
aGlsZENvCiAgICAgcmV0dXJuIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZCgmbV9w
YXJlbnQpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CitpbmxpbmUgRWxl
bWVudENoaWxkQ29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gRWxlbWVudENoaWxkQ29uc3RJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+OjpmaW5kKGNvbnN0IEVsZW1lbnQmIGNoaWxkKSBjb25z
dAoreworICAgIGlmICghaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihjaGlsZCkp
CisgICAgICAgIHJldHVybiBlbmQoKTsKKyAgICBpZiAoY2hpbGQucGFyZW50Tm9kZSgpICE9ICZt
X3BhcmVudCkKKyAgICAgICAgcmV0dXJuIGVuZCgpOworICAgIHJldHVybiBFbGVtZW50Q2hpbGRD
b25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3BhcmVudCwgc3RhdGljX2Nhc3Q8Y29uc3QgRWxl
bWVudFR5cGUqPigmY2hpbGQpKTsKK30KKwogLy8gU3RhbmRhbG9uZSBmdW5jdGlvbnMKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDE2MTQ4MykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uaCIKIAotI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIK
KyNpbmNsdWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNp
bmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93RWxlbWVu
dC5oIgpAQCAtNzAsMTEgKzcwLDEzIEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJv
d3NDb2xsZWMKIAogICAgIC8vIFN0YXJ0IGJ5IGxvb2tpbmcgZm9yIHRoZSBuZXh0IHJvdyBpbiB0
aGlzIHNlY3Rpb24uIENvbnRpbnVlIG9ubHkgaWYgdGhlcmUgaXMgbm9uZS4KICAgICBpZiAocHJl
dmlvdXMgJiYgcHJldmlvdXMtPnBhcmVudE5vZGUoKSAhPSB0YWJsZSkgewotICAgICAgICBpZiAo
YXV0byByb3cgPSBUcmF2ZXJzYWw8SFRNTFRhYmxlUm93RWxlbWVudD46Om5leHRTaWJsaW5nKHBy
ZXZpb3VzKSkKLSAgICAgICAgICAgIHJldHVybiByb3c7CisgICAgICAgIGF1dG8gcm93cyA9IGNo
aWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCpwcmV2aW91cy0+cGFyZW50Tm9kZSgp
KTsKKyAgICAgICAgYXV0byByb3cgPSByb3dzLmZpbmQoKnByZXZpb3VzKTsKKyAgICAgICAgaWYg
KCsrcm93ICE9IHJvd3MuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gJipyb3c7CiAgICAgfQog
Ci0gICAgRWxlbWVudCogY2hpbGQgPSAwOworICAgIEVsZW1lbnQqIGNoaWxkID0gbnVsbHB0cjsK
IAogICAgIC8vIElmIHN0aWxsIGxvb2tpbmcgYXQgaGVhZCBzZWN0aW9ucywgZmluZCB0aGUgZmly
c3Qgcm93IGluIHRoZSBuZXh0IGhlYWQgc2VjdGlvbi4KICAgICBpZiAoIXByZXZpb3VzKQpAQCAt
ODMsNyArODUsNyBAQCBIVE1MVGFibGVSb3dFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjCiAg
ICAgICAgIGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxpbmcocHJldmlvdXMtPnBh
cmVudE5vZGUoKSk7CiAgICAgZm9yICg7IGNoaWxkOyBjaGlsZCA9IEVsZW1lbnRUcmF2ZXJzYWw6
Om5leHRTaWJsaW5nKGNoaWxkKSkgewogICAgICAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUodGhl
YWRUYWcpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byByb3cgPSBUcmF2ZXJzYWw8SFRNTFRhYmxl
Um93RWxlbWVudD46OmZpcnN0Q2hpbGQoY2hpbGQpKQorICAgICAgICAgICAgaWYgKGF1dG8gcm93
ID0gY2hpbGRyZW5PZlR5cGU8SFRNTFRhYmxlUm93RWxlbWVudD4oKmNoaWxkKS5maXJzdCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiByb3c7CiAgICAgICAgIH0KICAgICB9CkBAIC05OSw3ICsx
MDEsNyBAQCBIVE1MVGFibGVSb3dFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjCiAgICAgICAg
IGlmIChpc0hUTUxUYWJsZVJvd0VsZW1lbnQoY2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIHRv
SFRNTFRhYmxlUm93RWxlbWVudChjaGlsZCk7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFt
ZSh0Ym9keVRhZykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IFRyYXZlcnNhbDxIVE1M
VGFibGVSb3dFbGVtZW50Pjo6Zmlyc3RDaGlsZChjaGlsZCkpCisgICAgICAgICAgICBpZiAoYXV0
byByb3cgPSBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmZpcnN0
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgfQogICAgIH0KQEAgLTEx
MSwxOSArMTEzLDE5IEBAIEhUTUxUYWJsZVJvd0VsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWMK
ICAgICAgICAgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhwcmV2aW91cy0+
cGFyZW50Tm9kZSgpKTsKICAgICBmb3IgKDsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNh
bDo6bmV4dFNpYmxpbmcoY2hpbGQpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZSh0
Zm9vdFRhZykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IFRyYXZlcnNhbDxIVE1MVGFi
bGVSb3dFbGVtZW50Pjo6Zmlyc3RDaGlsZChjaGlsZCkpCisgICAgICAgICAgICBpZiAoYXV0byBy
b3cgPSBjaGlsZHJlbk9mVHlwZTxIVE1MVGFibGVSb3dFbGVtZW50PigqY2hpbGQpLmZpcnN0KCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvdzsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBIVE1MVGFibGVSb3dFbGVtZW50KiBI
VE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6bGFzdFJvdyhIVE1MVGFibGVFbGVtZW50KiB0YWJsZSkK
IHsKICAgICBmb3IgKGF1dG8gY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFi
bGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hp
bGQpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykpIHsKLSAgICAg
ICAgICAgIGlmIChhdXRvIHJvdyA9IFRyYXZlcnNhbDxIVE1MVGFibGVSb3dFbGVtZW50Pjo6bGFz
dENoaWxkKGNoaWxkKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IGNoaWxkcmVuT2ZUeXBl
PEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCpjaGlsZCkubGFzdCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiByb3c7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzIsMTkgKzEzNCwxOSBAQCBIVE1MVGFi
bGVSb3dFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjCiAgICAgICAgIGlmIChpc0hUTUxUYWJs
ZVJvd0VsZW1lbnQoY2hpbGQpKQogICAgICAgICAgICAgcmV0dXJuIHRvSFRNTFRhYmxlUm93RWxl
bWVudChjaGlsZCk7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZSh0Ym9keVRhZykpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IFRyYXZlcnNhbDxIVE1MVGFibGVSb3dFbGVtZW50
Pjo6bGFzdENoaWxkKGNoaWxkKSkKKyAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IGNoaWxkcmVu
T2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCpjaGlsZCkubGFzdCgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiByb3c7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBmb3IgKGF1dG8gY2hpbGQg
PSBFbGVtZW50VHJhdmVyc2FsOjpsYXN0Q2hpbGQodGFibGUpOyBjaGlsZDsgY2hpbGQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoY2hpbGQpKSB7CiAgICAgICAgIGlmIChjaGls
ZC0+aGFzVGFnTmFtZSh0aGVhZFRhZykpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIHJvdyA9IFRy
YXZlcnNhbDxIVE1MVGFibGVSb3dFbGVtZW50Pjo6bGFzdENoaWxkKGNoaWxkKSkKKyAgICAgICAg
ICAgIGlmIChhdXRvIHJvdyA9IGNoaWxkcmVuT2ZUeXBlPEhUTUxUYWJsZVJvd0VsZW1lbnQ+KCpj
aGlsZCkubGFzdCgpKQogICAgICAgICAgICAgICAgIHJldHVybiByb3c7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb246OkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKEhUTUxUYWJsZUVsZW1lbnQm
IHRhYmxlKQo=
</data>
<flag name="review"
          id="244476"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>