<?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>120979</bug_id>
          
          <creation_ts>2013-09-07 17:06:17 -0700</creation_ts>
          <short_desc>Separate forward and backward paths in ComposedShadowTreeWalker</short_desc>
          <delta_ts>2013-09-08 00:02:12 -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>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>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>926309</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-07 17:06:17 -0700</bug_when>
    <thetext>make it clearer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926311</commentid>
    <comment_count>1</comment_count>
      <attachid>210937</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-07 17:09:33 -0700</bug_when>
    <thetext>Created attachment 210937
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926312</commentid>
    <comment_count>2</comment_count>
      <attachid>210937</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-07 17:16:51 -0700</bug_when>
    <thetext>Comment on attachment 210937
patch

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

r=me. Almost there eh?

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:131
&gt; +    ASSERT(node);
&gt; +    ASSERT(node);

Maybe you should also assert that &apos;node&apos; is non-null here.

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:150
&gt;      ASSERT(node);
&gt; -    if (Node* found = traverseSiblings(direction == TraversalDirectionForward ? node-&gt;nextSibling() : node-&gt;previousSibling(), direction))
&gt; -        return found;
&gt; -    return escapeFallbackContentElement(node, direction);
&gt; +    ASSERT(node);

And here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926392</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-09-08 00:02:12 -0700</bug_when>
    <thetext>https://trac.webkit.org/r155287</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210937</attachid>
            <date>2013-09-07 17:09:33 -0700</date>
            <delta_ts>2013-09-07 17:16:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>simplify-child-walker-2.patch</filename>
            <type>text/plain</type>
            <size>13557</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NTI2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEzLTA5LTA3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTZXBhcmF0ZSBmb3J3YXJkIGFu
ZCBiYWNrd2FyZCBwYXRocyBpbiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDk3OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmUgc2VwYXJhdGUgZmlyc3Qv
bGFzdCBhbmQgbmV4dC9wcmV2aW91cyBwYXRocyBpbnN0ZWFkIG9mIHVzaW5nIGEgZGlyZWN0aW9u
IGVudW0uCisgICAgICAgIAorICAgICAgICBSZWR1Y2UgdGhlIG51bWJlciBvZiBoZWxwZXIgZnVu
Y3Rpb25zIGFuZCBnaXZlIHRoZW0gbW9yZSB1bmRlcnN0YW5kYWJsZSBuYW1lcy4KKworICAgICAg
ICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZEZpcnN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmRGaXJzdEZyb21EaXN0cmlidXRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZExh
c3RTaWJsaW5nRW50ZXJpbmdJbnNlcnRpb25Qb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6Zmlu
ZExhc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kTGFz
dEZyb21EaXN0cmlidXRlZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjpmaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6dHJhdmVyc2VGaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjo6bGFzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBv
c2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VMYXN0Q2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpuZXh0U2libGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnByZXZpb3VzU2libGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dFNpYmxpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBy
ZXZpb3VzU2libGluZyk6CisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5o
OgorCiAyMDEzLTA5LTA3ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTaW1wbGlmeSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgcGFyZW50IHRyYXZlcnNhbApJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHAJKHJldmlzaW9uIDE1NTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRv
d1RyZWVXYWxrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogCiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTIsMTIzICs1MywxMjEgQEAgc3RhdGlj
IGlubGluZSBib29sIG5vZGVDYW5CZURpc3RyaWJ1dGVkKAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OmZpcnN0Q2hpbGQoKQotewotICAgIGFz
c2VydFByZWNvbmRpdGlvbigpOwotICAgIG1fbm9kZSA9IHRyYXZlcnNlQ2hpbGQobV9ub2RlLCBU
cmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkKTsKLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Ci19
CitzdGF0aWMgTm9kZSogZmluZEZpcnN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNv
bnN0IE5vZGUqKTsKK3N0YXRpYyBOb2RlKiBmaW5kRmlyc3RFbnRlcmluZ0luc2VydGlvblBvaW50
cyhjb25zdCBOb2RlKik7CitzdGF0aWMgTm9kZSogZmluZEZpcnN0RnJvbURpc3RyaWJ1dGVkTm9k
ZShjb25zdCBOb2RlKiwgY29uc3QgSW5zZXJ0aW9uUG9pbnQqKTsKK3N0YXRpYyBOb2RlKiBmaW5k
TGFzdFNpYmxpbmdFbnRlcmluZ0luc2VydGlvblBvaW50cyhjb25zdCBOb2RlKik7CitzdGF0aWMg
Tm9kZSogZmluZExhc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyhjb25zdCBOb2RlKik7CitzdGF0
aWMgTm9kZSogZmluZExhc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGNvbnN0IE5vZGUqLCBjb25zdCBJ
bnNlcnRpb25Qb2ludCopOwogCi1Ob2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZl
cnNlRmlyc3RDaGlsZChjb25zdCBOb2RlKiBub2RlKSBjb25zdAotewotICAgIEFTU0VSVChub2Rl
KTsKLSAgICByZXR1cm4gdHJhdmVyc2VDaGlsZChub2RlLCBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3
YXJkKTsKLX0KLQotdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6Omxhc3RDaGlsZCgpCitz
dGF0aWMgTm9kZSogZmluZEZpcnN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKGNvbnN0
IE5vZGUqIG5vZGUpCiB7Ci0gICAgYXNzZXJ0UHJlY29uZGl0aW9uKCk7Ci0gICAgbV9ub2RlID0g
dHJhdmVyc2VMYXN0Q2hpbGQobV9ub2RlKTsKLSAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7Cisg
ICAgZm9yIChjb25zdCBOb2RlKiBzaWJsaW5nID0gbm9kZTsgc2libGluZzsgc2libGluZyA9IHNp
YmxpbmctPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZEZp
cnN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoc2libGluZykpCisgICAgICAgICAgICByZXR1cm4g
Zm91bmQ7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCi1Ob2RlKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTGFzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0
CitzdGF0aWMgTm9kZSogZmluZEZpcnN0RW50ZXJpbmdJbnNlcnRpb25Qb2ludHMoY29uc3QgTm9k
ZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgcmV0dXJuIHRyYXZlcnNlQ2hpbGQo
bm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQpOworICAgIGlmICghaXNBY3RpdmVJbnNl
cnRpb25Qb2ludChub2RlKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG5vZGUp
OworICAgIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9u
UG9pbnQobm9kZSk7CisgICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZEZpcnN0RnJvbURpc3RyaWJ1
dGVkTm9kZShpbnNlcnRpb25Qb2ludC0+Zmlyc3REaXN0cmlidXRlZCgpLCBpbnNlcnRpb25Qb2lu
dCkpCisgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICByZXR1cm4gZmluZEZpcnN0U2libGluZ0Vu
dGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUtPmZpcnN0Q2hpbGQoKSk7CiB9CiAKLU5vZGUqIENv
bXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VDaGlsZChjb25zdCBOb2RlKiBub2RlLCBU
cmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKSBjb25zdAorc3RhdGljIE5vZGUqIGZpbmRGaXJz
dEZyb21EaXN0cmlidXRlZE5vZGUoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgSW5zZXJ0aW9uUG9p
bnQqIGluc2VydGlvblBvaW50KQogewotICAgIEFTU0VSVChub2RlKTsKLSAgICBpZiAoY2FuQ3Jv
c3NVcHBlckJvdW5kYXJ5KCkpIHsKLSAgICAgICAgcmV0dXJuIG5vZGUtPnNoYWRvd1Jvb3QoKSA/
IHRyYXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLT5zaGFkb3dSb290KCksIGRpcmVjdGlvbikKLSAg
ICAgICAgICAgIDogdHJhdmVyc2VMaWdodENoaWxkcmVuKG5vZGUsIGRpcmVjdGlvbik7CisgICAg
Zm9yIChjb25zdCBOb2RlKiBuZXh0ID0gbm9kZTsgbmV4dDsgbmV4dCA9IGluc2VydGlvblBvaW50
LT5uZXh0RGlzdHJpYnV0ZWRUbyhuZXh0KSkgeworICAgICAgICBpZiAoTm9kZSogZm91bmQgPSBm
aW5kRmlyc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyhuZXh0KSkKKyAgICAgICAgICAgIHJldHVy
biBmb3VuZDsKICAgICB9Ci0gICAgaWYgKGlzU2hhZG93SG9zdChub2RlKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIHRyYXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLCBkaXJlY3Rpb24p
OwotfQotCi1Ob2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTGlnaHRDaGls
ZHJlbihjb25zdCBOb2RlKiBub2RlLCBUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQotewot
ICAgIEFTU0VSVChub2RlKTsKLSAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5ncyhkaXJlY3Rpb24g
PT0gVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCA/IG5vZGUtPmZpcnN0Q2hpbGQoKSA6IG5vZGUt
Pmxhc3RDaGlsZCgpLCBkaXJlY3Rpb24pOworICAgIHJldHVybiBudWxscHRyOwogfQogCi1Ob2Rl
KiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ3MoY29uc3QgTm9kZSog
bm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBOb2RlKiBmaW5kTGFz
dFNpYmxpbmdFbnRlcmluZ0luc2VydGlvblBvaW50cyhjb25zdCBOb2RlKiBub2RlKQogewotICAg
IGZvciAoY29uc3QgTm9kZSogc2libGluZyA9IG5vZGU7IHNpYmxpbmc7IHNpYmxpbmcgPSAoZGly
ZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBzaWJsaW5nLT5uZXh0U2libGlu
ZygpIDogc2libGluZy0+cHJldmlvdXNTaWJsaW5nKCkpKSB7Ci0gICAgICAgIGlmIChOb2RlKiBm
b3VuZCA9IHRyYXZlcnNlTm9kZShzaWJsaW5nLCBkaXJlY3Rpb24pKQorICAgIGZvciAoY29uc3Qg
Tm9kZSogc2libGluZyA9IG5vZGU7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91
c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAoTm9kZSogZm91bmQgPSBmaW5kTGFzdEVudGVyaW5n
SW5zZXJ0aW9uUG9pbnRzKHNpYmxpbmcpKQogICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAg
IH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZU5vZGUoY29uc3QgTm9kZSogbm9kZSwgVHJhdmVy
c2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3N0YXRpYyBOb2RlKiBmaW5kTGFzdEVudGVyaW5nSW5z
ZXJ0aW9uUG9pbnRzKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAg
IGlmICghaXNBY3RpdmVJbnNlcnRpb25Qb2ludChub2RlKSkKICAgICAgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8Tm9kZSo+KG5vZGUpOwogICAgIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7Ci0gICAgaWYgKE5vZGUqIGZvdW5kID0gdHJh
dmVyc2VEaXN0cmlidXRlZE5vZGVzKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3
YXJkID8gaW5zZXJ0aW9uUG9pbnQtPmZpcnN0RGlzdHJpYnV0ZWQoKSA6IGluc2VydGlvblBvaW50
LT5sYXN0RGlzdHJpYnV0ZWQoKSwgaW5zZXJ0aW9uUG9pbnQsIGRpcmVjdGlvbikpCisgICAgaWYg
KE5vZGUqIGZvdW5kID0gZmluZExhc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGluc2VydGlvblBvaW50
LT5sYXN0RGlzdHJpYnV0ZWQoKSwgaW5zZXJ0aW9uUG9pbnQpKQogICAgICAgICByZXR1cm4gZm91
bmQ7Ci0gICAgcmV0dXJuIHRyYXZlcnNlTGlnaHRDaGlsZHJlbihub2RlLCBkaXJlY3Rpb24pOwor
ICAgIHJldHVybiBmaW5kTGFzdFNpYmxpbmdFbnRlcmluZ0luc2VydGlvblBvaW50cyhub2RlLT5s
YXN0Q2hpbGQoKSk7CiB9CiAKLXZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpuZXh0U2li
bGluZygpCitzdGF0aWMgTm9kZSogZmluZExhc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGNvbnN0IE5v
ZGUqIG5vZGUsIGNvbnN0IEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkKIHsKLSAgICBh
c3NlcnRQcmVjb25kaXRpb24oKTsKLSAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdPckJhY2tU
b0luc2VydGlvblBvaW50KG1fbm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uRm9yd2FyZCk7Ci0gICAg
YXNzZXJ0UG9zdGNvbmRpdGlvbigpOworICAgIGZvciAoY29uc3QgTm9kZSogbmV4dCA9IG5vZGU7
IG5leHQ7IG5leHQgPSBpbnNlcnRpb25Qb2ludC0+cHJldmlvdXNEaXN0cmlidXRlZFRvKG5leHQp
KSB7CisgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRMYXN0RW50ZXJpbmdJbnNlcnRpb25Q
b2ludHMobmV4dCkpCisgICAgICAgICAgICByZXR1cm4gZm91bmQ7CisgICAgfQorICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6cHJldmlvdXNT
aWJsaW5nKCkKK3ZvaWQgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpmaXJzdENoaWxkKCkKIHsK
ICAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKLSAgICBtX25vZGUgPSB0cmF2ZXJzZVNpYmxpbmdP
ckJhY2tUb0luc2VydGlvblBvaW50KG1fbm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uQmFja3dhcmQp
OworICAgIG1fbm9kZSA9IHRyYXZlcnNlRmlyc3RDaGlsZChtX25vZGUpOwogICAgIGFzc2VydFBv
c3Rjb25kaXRpb24oKTsKIH0KIAotTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2
ZXJzZURpc3RyaWJ1dGVkTm9kZXMoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgSW5zZXJ0aW9uUG9p
bnQqIGluc2VydGlvblBvaW50LCBUcmF2ZXJzYWxEaXJlY3Rpb24gZGlyZWN0aW9uKQorTm9kZSog
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZUZpcnN0Q2hpbGQoY29uc3QgTm9kZSog
bm9kZSkgY29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IE5vZGUqIG5leHQgPSBub2RlOyBuZXh0OyBu
ZXh0ID0gKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3YXJkID8gaW5zZXJ0aW9u
UG9pbnQtPm5leHREaXN0cmlidXRlZFRvKG5leHQpIDogaW5zZXJ0aW9uUG9pbnQtPnByZXZpb3Vz
RGlzdHJpYnV0ZWRUbyhuZXh0KSkpIHsKLSAgICAgICAgaWYgKE5vZGUqIGZvdW5kID0gdHJhdmVy
c2VOb2RlKG5leHQsIGRpcmVjdGlvbikpCi0gICAgICAgICAgICByZXR1cm4gZm91bmQ7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+c2hhZG93Um9v
dCgpKSB7CisgICAgICAgIGlmICghY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd1Jvb3QoKTsKICAg
ICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZpbmRGaXJzdFNpYmxpbmdFbnRlcmluZ0lu
c2VydGlvblBvaW50cyhub2RlLT5maXJzdENoaWxkKCkpOwogfQogCi1Ob2RlKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQoY29u
c3QgTm9kZSogbm9kZSwgVHJhdmVyc2FsRGlyZWN0aW9uIGRpcmVjdGlvbikKK3ZvaWQgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpsYXN0Q2hpbGQoKQogewotICAgIEFTU0VSVChub2RlKTsKLQot
ICAgIGlmICghbm9kZUNhbkJlRGlzdHJpYnV0ZWQobm9kZSkpCi0gICAgICAgIHJldHVybiB0cmF2
ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0KLSAgICBJbnNlcnRp
b25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBmaW5kSW5zZXJ0aW9uUG9pbnRPZihub2RlKTsKLSAg
ICBpZiAoIWluc2VydGlvblBvaW50KQotICAgICAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5nSW5D
dXJyZW50VHJlZShub2RlLCBkaXJlY3Rpb24pOwotCi0gICAgaWYgKE5vZGUqIGZvdW5kID0gdHJh
dmVyc2VEaXN0cmlidXRlZE5vZGVzKGRpcmVjdGlvbiA9PSBUcmF2ZXJzYWxEaXJlY3Rpb25Gb3J3
YXJkID8gaW5zZXJ0aW9uUG9pbnQtPm5leHREaXN0cmlidXRlZFRvKG5vZGUpIDogaW5zZXJ0aW9u
UG9pbnQtPnByZXZpb3VzRGlzdHJpYnV0ZWRUbyhub2RlKSwgaW5zZXJ0aW9uUG9pbnQsIGRpcmVj
dGlvbikpCi0gICAgICAgIHJldHVybiBmb3VuZDsKLSAgICByZXR1cm4gdHJhdmVyc2VTaWJsaW5n
T3JCYWNrVG9JbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCwgZGlyZWN0aW9uKTsKKyAgICBh
c3NlcnRQcmVjb25kaXRpb24oKTsKKyAgICBtX25vZGUgPSB0cmF2ZXJzZUxhc3RDaGlsZChtX25v
ZGUpOworICAgIGFzc2VydFBvc3Rjb25kaXRpb24oKTsKIH0KIAotTm9kZSogQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5vZGUqIG5v
ZGUsIFRyYXZlcnNhbERpcmVjdGlvbiBkaXJlY3Rpb24pCitOb2RlKiBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OnRyYXZlcnNlTGFzdENoaWxkKGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKG5vZGUpOwotICAgIGlmIChOb2RlKiBmb3VuZCA9IHRyYXZlcnNlU2libGluZ3Mo
ZGlyZWN0aW9uID09IFRyYXZlcnNhbERpcmVjdGlvbkZvcndhcmQgPyBub2RlLT5uZXh0U2libGlu
ZygpIDogbm9kZS0+cHJldmlvdXNTaWJsaW5nKCksIGRpcmVjdGlvbikpCi0gICAgICAgIHJldHVy
biBmb3VuZDsKLSAgICByZXR1cm4gZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudChub2RlLCBk
aXJlY3Rpb24pOworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAobm9kZS0+c2hhZG93Um9vdCgp
KSB7CisgICAgICAgIGlmICghY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd1Jvb3QoKTsKKyAgICB9
CisgICAgcmV0dXJuIGZpbmRMYXN0U2libGluZ0VudGVyaW5nSW5zZXJ0aW9uUG9pbnRzKG5vZGUt
Pmxhc3RDaGlsZCgpKTsKIH0KIAotaW5saW5lIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6ZXNjYXBlRmFsbGJhY2tDb250ZW50RWxlbWVudChjb25zdCBOb2RlKiBub2RlLCBUcmF2ZXJz
YWxEaXJlY3Rpb24gZGlyZWN0aW9uKQordm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6Om5l
eHRTaWJsaW5nKCkKIHsKLSAgICBBU1NFUlQobm9kZSk7Ci0gICAgaWYgKG5vZGUtPnBhcmVudE5v
ZGUoKSAmJiBpc0FjdGl2ZUluc2VydGlvblBvaW50KG5vZGUtPnBhcmVudE5vZGUoKSkpCi0gICAg
ICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBvaW50KG5vZGUtPnBh
cmVudE5vZGUoKSwgZGlyZWN0aW9uKTsKLSAgICByZXR1cm4gMDsKKyAgICBhc3NlcnRQcmVjb25k
aXRpb24oKTsKKyAgICBtX25vZGUgPSB0cmF2ZXJzZU5leHRTaWJsaW5nKG1fbm9kZSk7CisgICAg
YXNzZXJ0UG9zdGNvbmRpdGlvbigpOworfQorCit2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6cHJldmlvdXNTaWJsaW5nKCkKK3sKKyAgICBhc3NlcnRQcmVjb25kaXRpb24oKTsKKyAgICBt
X25vZGUgPSB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhtX25vZGUpOworICAgIGFzc2VydFBvc3Rj
b25kaXRpb24oKTsKIH0KIAogdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBhcmVudCgp
CkBAIC0yMTEsMTMgKzIxMCw0NSBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRy
YXZlcnNlCiBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlTmV4dFNpYmxp
bmcoY29uc3QgTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZSk7Ci0gICAgcmV0dXJuIHRy
YXZlcnNlU2libGluZ09yQmFja1RvSW5zZXJ0aW9uUG9pbnQobm9kZSwgVHJhdmVyc2FsRGlyZWN0
aW9uRm9yd2FyZCk7CisKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQ7CisgICAg
aWYgKG5vZGVDYW5CZURpc3RyaWJ1dGVkKG5vZGUpICYmIChpbnNlcnRpb25Qb2ludCA9IGZpbmRJ
bnNlcnRpb25Qb2ludE9mKG5vZGUpKSkgeworICAgICAgICBOb2RlKiBmb3VuZCA9IGZpbmRGaXJz
dEZyb21EaXN0cmlidXRlZE5vZGUoaW5zZXJ0aW9uUG9pbnQtPm5leHREaXN0cmlidXRlZFRvKG5v
ZGUpLCBpbnNlcnRpb25Qb2ludCk7CisgICAgICAgIGlmIChmb3VuZCkKKyAgICAgICAgICAgIHJl
dHVybiBmb3VuZDsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTmV4dFNpYmxpbmcoaW5zZXJ0aW9u
UG9pbnQpOworICAgIH0KKworICAgIGZvciAoY29uc3QgTm9kZSogc2libGluZyA9IG5vZGUtPm5l
eHRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0U2libGluZygpKSB7
CisgICAgICAgIGlmIChOb2RlKiBmb3VuZCA9IGZpbmRGaXJzdEVudGVyaW5nSW5zZXJ0aW9uUG9p
bnRzKHNpYmxpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5kOworICAgIH0KKyAgICBpZiAo
bm9kZS0+cGFyZW50Tm9kZSgpICYmIGlzQWN0aXZlSW5zZXJ0aW9uUG9pbnQobm9kZS0+cGFyZW50
Tm9kZSgpKSkKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlTmV4dFNpYmxpbmcobm9kZS0+cGFyZW50
Tm9kZSgpKTsKKworICAgIHJldHVybiBudWxscHRyOwogfQogCiBOb2RlKiBDb21wb3NlZFNoYWRv
d1RyZWVXYWxrZXI6OnRyYXZlcnNlUHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIG5vZGUpCiB7
CiAgICAgQVNTRVJUKG5vZGUpOwotICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0lu
c2VydGlvblBvaW50KG5vZGUsIFRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJkKTsKKworICAgIElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludDsKKyAgICBpZiAobm9kZUNhbkJlRGlzdHJpYnV0
ZWQobm9kZSkgJiYgKGluc2VydGlvblBvaW50ID0gZmluZEluc2VydGlvblBvaW50T2Yobm9kZSkp
KSB7CisgICAgICAgIE5vZGUqIGZvdW5kID0gZmluZExhc3RGcm9tRGlzdHJpYnV0ZWROb2RlKGlu
c2VydGlvblBvaW50LT5wcmV2aW91c0Rpc3RyaWJ1dGVkVG8obm9kZSksIGluc2VydGlvblBvaW50
KTsKKyAgICAgICAgaWYgKGZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIGZvdW5kOworICAgICAg
ICByZXR1cm4gdHJhdmVyc2VQcmV2aW91c1NpYmxpbmcoaW5zZXJ0aW9uUG9pbnQpOworICAgIH0K
KworICAgIGZvciAoY29uc3QgTm9kZSogc2libGluZyA9IG5vZGUtPnByZXZpb3VzU2libGluZygp
OyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAg
ICAgaWYgKE5vZGUqIGZvdW5kID0gZmluZExhc3RFbnRlcmluZ0luc2VydGlvblBvaW50cyhzaWJs
aW5nKSkKKyAgICAgICAgICAgIHJldHVybiBmb3VuZDsKKyAgICB9CisgICAgaWYgKG5vZGUtPnBh
cmVudE5vZGUoKSAmJiBpc0FjdGl2ZUluc2VydGlvblBvaW50KG5vZGUtPnBhcmVudE5vZGUoKSkp
CisgICAgICAgIHJldHVybiB0cmF2ZXJzZVByZXZpb3VzU2libGluZyhub2RlLT5wYXJlbnROb2Rl
KCkpOworCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpuZXh0KCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyLmgJKHJldmlzaW9uIDE1NTI2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTEgKzY4LDYg
QEAgcHVibGljOgogICAgIE5vZGUqIHRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqKSBjb25zdDsK
IAogcHJpdmF0ZToKLSAgICBlbnVtIFRyYXZlcnNhbERpcmVjdGlvbiB7Ci0gICAgICAgIFRyYXZl
cnNhbERpcmVjdGlvbkZvcndhcmQsCi0gICAgICAgIFRyYXZlcnNhbERpcmVjdGlvbkJhY2t3YXJk
Ci0gICAgfTsKLQogICAgIGJvb2wgY2FuQ3Jvc3NVcHBlckJvdW5kYXJ5KCkgY29uc3QgeyByZXR1
cm4gbV9wb2xpY3kgPT0gQ3Jvc3NVcHBlckJvdW5kYXJ5OyB9CiAKICAgICB2b2lkIGFzc2VydFBy
ZWNvbmRpdGlvbigpIGNvbnN0CkBAIC05MywyNCArODgsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgog
ICAgIH0KIAotICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZU5vZGUoY29uc3QgTm9kZSosIFRyYXZl
cnNhbERpcmVjdGlvbik7Ci0gICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlTGlnaHRDaGlsZHJlbihj
b25zdCBOb2RlKiwgVHJhdmVyc2FsRGlyZWN0aW9uKTsKLQogICAgIE5vZGUqIHRyYXZlcnNlRmly
c3RDaGlsZChjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgTm9kZSogdHJhdmVyc2VMYXN0Q2hpbGQo
Y29uc3QgTm9kZSopIGNvbnN0OwotICAgIE5vZGUqIHRyYXZlcnNlQ2hpbGQoY29uc3QgTm9kZSos
IFRyYXZlcnNhbERpcmVjdGlvbikgY29uc3Q7CiAKICAgICBzdGF0aWMgTm9kZSogdHJhdmVyc2VO
ZXh0U2libGluZyhjb25zdCBOb2RlKik7CiAgICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlUHJldmlv
dXNTaWJsaW5nKGNvbnN0IE5vZGUqKTsKIAotICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxp
bmdPckJhY2tUb0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqLCBUcmF2ZXJzYWxEaXJlY3Rpb24p
OwotICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKGNvbnN0IE5v
ZGUqLCBUcmF2ZXJzYWxEaXJlY3Rpb24pOwotCi0gICAgc3RhdGljIE5vZGUqIHRyYXZlcnNlU2li
bGluZ3MoY29uc3QgTm9kZSosIFRyYXZlcnNhbERpcmVjdGlvbik7Ci0gICAgc3RhdGljIE5vZGUq
IHRyYXZlcnNlRGlzdHJpYnV0ZWROb2Rlcyhjb25zdCBOb2RlKiwgY29uc3QgSW5zZXJ0aW9uUG9p
bnQqLCBUcmF2ZXJzYWxEaXJlY3Rpb24pOwotCi0gICAgc3RhdGljIE5vZGUqIGVzY2FwZUZhbGxi
YWNrQ29udGVudEVsZW1lbnQoY29uc3QgTm9kZSosIFRyYXZlcnNhbERpcmVjdGlvbik7Ci0KICAg
ICBjb25zdCBOb2RlKiBtX25vZGU7CiAgICAgUG9saWN5IG1fcG9saWN5OwogfTsK
</data>
<flag name="review"
          id="232968"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>