<?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>24576</bug_id>
          
          <creation_ts>2009-03-13 07:16:10 -0700</creation_ts>
          <short_desc>Selection rendering code uses DOM offsets as if they were render tree offsets</short_desc>
          <delta_ts>2012-05-31 11:02:49 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></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>
          <dependson>24621</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>antaryami.pandia</cc>
    
    <cc>ap</cc>
    
    <cc>enrica</cc>
    
    <cc>justin.garcia</cc>
    
    <cc>kocienda</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>113590</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-13 07:16:10 -0700</bug_when>
    <thetext>I noticed that the selection code uses DOM offsets as if they were render tree child offsets. I will be fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113605</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-13 10:10:42 -0700</bug_when>
    <thetext>There is one case of this in Range.cpp and a few in RenderView.cpp.

I&apos;ve got a patch underway for this now; it&apos;s going well. What I知 not so sure about yet is what regression tests I知 going to write to demonstrate the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113628</commentid>
    <comment_count>2</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-03-13 10:57:19 -0700</bug_when>
    <thetext>This can only be a problem if the DOM position is [container, n] where n is not zero but we have very few editing positions like that (which is what is used to feed RenderView::setSelection).  

It would be easier to write a regression test for the fix in Range::addLineBox rects (assuming you exposed that function) since you can use whatever end position you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113751</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-14 00:22:02 -0700</bug_when>
    <thetext>Will fix fix bug 8855? It has a test case that triggers (used to trigger?) an assertion in debug builds, and caused some weird behavior in release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113760</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-14 07:50:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Will fix fix bug 8855? It has a test case that triggers (used to trigger?) an
&gt; assertion in debug builds, and caused some weird behavior in release.

I&apos;ll check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113879</commentid>
    <comment_count>5</comment_count>
      <attachid>28649</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-16 09:10:53 -0700</bug_when>
    <thetext>Created attachment 28649
work in process -- can&apos;t land until after PositionIterator issues are fixed

This is a work in progress. I think the changes are all correct, but they are causing regression test failures. Some of those failures are progressions. But at least one of them is a problem, caused by the PositionIterator problem in the blocking bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117161</commentid>
    <comment_count>6</comment_count>
    <who name="Justin Garcia">justin.garcia</who>
    <bug_when>2009-04-10 12:27:20 -0700</bug_when>
    <thetext>-    RenderObject* stop = end-&gt;childAt(m_end.offset());
-    if (!stop)
-        stop = end-&gt;nextInPreOrderAfterChildren();
+    RenderObject* stop = 0;
+    for (Node* stopNode = pastLastNode(); stopNode; stopNode = stopNode-&gt;traverseNextNode()) {
+        if ((stop = stopNode-&gt;renderer()))
+            break;
+    }

we tried this and ran into a problem when the range we were iterating over ended in the last text node inside a form element (or in some other shadow tree).  

in this case pastLastNode() is null, so both stopNode and stop are null.  since shadow trees are in the main document&apos;s render tree, we iterate all the way to the end of the document w/o stopping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117167</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-04-10 13:10:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; -    RenderObject* stop = end-&gt;childAt(m_end.offset());
&gt; -    if (!stop)
&gt; -        stop = end-&gt;nextInPreOrderAfterChildren();
&gt; +    RenderObject* stop = 0;
&gt; +    for (Node* stopNode = pastLastNode(); stopNode; stopNode =
&gt; stopNode-&gt;traverseNextNode()) {
&gt; +        if ((stop = stopNode-&gt;renderer()))
&gt; +            break;
&gt; +    }
&gt; 
&gt; we tried this and ran into a problem when the range we were iterating over
&gt; ended in the last text node inside a form element (or in some other shadow
&gt; tree).  
&gt; 
&gt; in this case pastLastNode() is null, so both stopNode and stop are null.  since
&gt; shadow trees are in the main document&apos;s render tree, we iterate all the way to
&gt; the end of the document w/o stopping.

OK. Simple to solve. We&apos;ll need to add code that knows how to go out of the shadow tree since the render tree covers both the shadow DOM and the real DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634878</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-27 21:50:57 -0700</bug_when>
    <thetext>Thought the modern day editing experts might be interested in my struggle from three years ago. This was never resolved.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28649</attachid>
            <date>2009-03-16 09:10:53 -0700</date>
            <delta_ts>2010-06-11 13:35:20 -0700</delta_ts>
            <desc>work in process -- can&apos;t land until after PositionIterator issues are fixed</desc>
            <filename>RenderTreeDOMOffsetsPatch.txt</filename>
            <type>text/plain</type>
            <size>10522</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL1JhbmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9S
YW5nZS5jcHAJKHJldmlzaW9uIDQxNjY2KQorKysgV2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogICogKEMpIDIwMDAgR3VubnN0ZWluIEx5ZSAoZ3Vu
bnN0ZWluQG5ldGNvbS5ubykKICAqIChDKSAyMDAwIEZyZWRlcmlrIEhvbGxqZW4gKGZyZWRlcmlr
LmhvbGxqZW5AaGlnLm5vKQogICogKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0xNTkwLDkgKzE1OTAsMTEgQEAgdm9pZCBSYW5nZTo6YWRkTGluZUJv
eFJlY3RzKFZlY3RvcjxJbnRSZQogICAgIGlmICghc3RhcnQgfHwgIWVuZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVuZGVyT2JqZWN0KiBzdG9wID0gZW5kLT5jaGlsZEF0KG1fZW5kLm9mZnNl
dCgpKTsKLSAgICBpZiAoIXN0b3ApCi0gICAgICAgIHN0b3AgPSBlbmQtPm5leHRJblByZU9yZGVy
QWZ0ZXJDaGlsZHJlbigpOworICAgIFJlbmRlck9iamVjdCogc3RvcCA9IDA7CisgICAgZm9yIChO
b2RlKiBzdG9wTm9kZSA9IHBhc3RMYXN0Tm9kZSgpOyBzdG9wTm9kZTsgc3RvcE5vZGUgPSBzdG9w
Tm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgICAgIGlmICgoc3RvcCA9IHN0b3BOb2Rl
LT5yZW5kZXJlcigpKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAKICAgICBmb3Ig
KFJlbmRlck9iamVjdCogciA9IHN0YXJ0OyByICYmIHIgIT0gc3RvcDsgciA9IHItPm5leHRJblBy
ZU9yZGVyKCkpIHsKICAgICAgICAgLy8gb25seSBhc2sgbGVhZiByZW5kZXIgb2JqZWN0cyBmb3Ig
dGhlaXIgbGluZSBib3ggcmVjdHMKSW5kZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkocmV2aXNpb24gNDE2NjYpCisrKyBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBAQAogICogICAg
ICAgICAgICAgICAgICAgICAyMDAwIFNpbW9uIEhhdXNtYW5uIDxoYXVzbWFubkBrZGUub3JnPgog
ICogICAgICAgICAgICAgICAgICAgICAyMDAwIFN0ZWZhbiBTY2hpbWFuc2tpIDwxU3RlaW5AZ214
LmRlPgogICogICAgICAgICAgICAgICAgICAgICAyMDAxIEdlb3JnZSBTdGFpa29zIDxzdGFpa29z
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwNSBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEBueXBvcC5jb20+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0
Lm9yZz4KQEAgLTMyLDMxICszMiwxNyBAQAogI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgi
CiAjaW5jbHVkZSAiQmVmb3JlVW5sb2FkRXZlbnQuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaCIKLSNpbmNsdWRlICJDU1NQcm9wZXJ0eS5oIgotI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCi0jaW5j
bHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRUeXBlLmgiCiAjaW5jbHVkZSAiRWRpdGluZ1RleHQuaCIKICNpbmNsdWRlICJFZGl0b3JD
bGllbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiRmxvYXRRdWFkLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
LSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNp
bmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MRnJhbWVFbGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MRnJhbWVF
bGVtZW50QmFzZS5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSGl0VGVzdFJlc3VsdC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJtYXJr
dXAuaCIKICNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5oIgotI2luY2x1ZGUgIk5hdmlnYXRv
ci5oIgogI2luY2x1ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlZ3VsYXJFeHByZXNzaW9uLmgiCkBAIC02NywyNiArNTMsMTkgQEAKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKLSNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMu
aCIKLSNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAibnBydW50aW1lX2lt
cGwuaCIKKyNpbmNsdWRlICJodG1sZWRpdGluZy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogI2lu
Y2x1ZGUgInZpc2libGVfdW5pdHMuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCi0jaWYgVVNFKEpTQykKLSNp
bmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCi0jaW5jbHVkZSAicnVudGltZV9yb290LmgiCi0j
ZW5kaWYKLQogI2lmIEZSQU1FX0xPQURTX1VTRVJfU1RZTEVTSEVFVAogI2luY2x1ZGUgIlVzZXJT
dHlsZVNoZWV0TG9hZGVyLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAi
U1ZHRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNlbmRpZgpAQCAtNjI5
LDI4ICs2MDgsODYgQEAgdm9pZCBGcmFtZTo6c2VsZWN0aW9uTGF5b3V0Q2hhbmdlZCgpCiAKICAg
ICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IHRoaXMtPnNlbGVjdGlvbigpLT5zZWxlY3Rp
b24oKTsKICAgICAgICAgCi0gICAgaWYgKCFzZWxlY3Rpb24uaXNSYW5nZSgpKQorICAgIGlmICgh
c2VsZWN0aW9uLmlzUmFuZ2UoKSkgeworICAgICAgICB2aWV3LT5jbGVhclNlbGVjdGlvbigpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgY2FuIGdldCBpbnRvIGEgc3RhdGUg
d2hlcmUgdGhlIHNlbGVjdGlvbiBlbmRwb2ludHMgbWFwIHRvIHRoZSBzYW1lIFZpc2libGVQb3Np
dGlvbiB3aGVuIGEgc2VsZWN0aW9uIGlzIGRlbGV0ZWQKKyAgICAvLyBiZWNhdXNlIHdlIGRvbid0
IHlldCBub3RpZnkgdGhlIFNlbGVjdGlvbkNvbnRyb2xsZXIgb2YgdGV4dCByZW1vdmFsLgorICAg
IGlmIChzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgPT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKSkg
ewogICAgICAgICB2aWV3LT5jbGVhclNlbGVjdGlvbigpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgLy8gVXNlIHRoZSByaWdodG1vc3QgY2FuZGlkYXRlIGZvciB0aGUgc3RhcnQgb2Yg
dGhlIHNlbGVjdGlvbiwgYW5kIHRoZSBsZWZ0bW9zdCBjYW5kaWRhdGUgZm9yIHRoZSBlbmQgb2Yg
dGhlIHNlbGVjdGlvbi4KKyAgICAvLyBFeGFtcGxlOiBmb28gPGE+YmFyPC9hPi4gIEltYWdpbmUg
dGhhdCBhIGxpbmUgd3JhcCBvY2N1cnMgYWZ0ZXIgJ2ZvbycsIGFuZCB0aGF0ICdiYXInIGlzIHNl
bGVjdGVkLiAgIElmIHdlIHBhc3MgW2ZvbywgM10KKyAgICAvLyBhcyB0aGUgc3RhcnQgb2YgdGhl
IHNlbGVjdGlvbiwgdGhlIHNlbGVjdGlvbiBwYWludGluZyBjb2RlIHdpbGwgdGhpbmsgdGhhdCBj
b250ZW50IG9uIHRoZSBsaW5lIGNvbnRhaW5pbmcgJ2ZvbycgaXMgc2VsZWN0ZWQKKyAgICAvLyBh
bmQgd2lsbCBmaWxsIHRoZSBnYXAgYmVmb3JlICdiYXInLgorICAgIFBvc2l0aW9uIHN0YXJ0UG9z
ID0gc2VsZWN0aW9uLnN0YXJ0KCk7CisgICAgaWYgKHN0YXJ0UG9zLmRvd25zdHJlYW0oKS5pc0Nh
bmRpZGF0ZSgpKQorICAgICAgICBzdGFydFBvcyA9IHN0YXJ0UG9zLmRvd25zdHJlYW0oKTsKKyAg
ICBQb3NpdGlvbiBlbmRQb3MgPSBzZWxlY3Rpb24uZW5kKCk7CisgICAgaWYgKGVuZFBvcy51cHN0
cmVhbSgpLmlzQ2FuZGlkYXRlKCkpCisgICAgICAgIGVuZFBvcyA9IGVuZFBvcy51cHN0cmVhbSgp
OworCisgICAgLy8gRmluZCB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgc2VsZWN0aW9uLgorICAgIE5v
ZGUqIHN0YXJ0Tm9kZTsKKyAgICBpZiAoIXN0YXJ0UG9zLmNvbnRhaW5lciB8fCBzdGFydFBvcy5j
b250YWluZXItPm9mZnNldEluQ2hhcmFjdGVycygpIHx8ICFjYW5IYXZlQ2hpbGRyZW5Gb3JFZGl0
aW5nKHN0YXJ0UG9zLmNvbnRhaW5lci5nZXQoKSkpCisgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0
UG9zLmNvbnRhaW5lci5nZXQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgLy8gVXNlIHRoZSByaWdo
dG1vc3QgY2FuZGlkYXRlIGZvciB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbiwgYW5kIHRoZSBs
ZWZ0bW9zdCBjYW5kaWRhdGUgZm9yIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbi4KLSAgICAgICAg
Ly8gRXhhbXBsZTogZm9vIDxhPmJhcjwvYT4uICBJbWFnaW5lIHRoYXQgYSBsaW5lIHdyYXAgb2Nj
dXJzIGFmdGVyICdmb28nLCBhbmQgdGhhdCAnYmFyJyBpcyBzZWxlY3RlZC4gICBJZiB3ZSBwYXNz
IFtmb28sIDNdCi0gICAgICAgIC8vIGFzIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uLCB0aGUg
c2VsZWN0aW9uIHBhaW50aW5nIGNvZGUgd2lsbCB0aGluayB0aGF0IGNvbnRlbnQgb24gdGhlIGxp
bmUgY29udGFpbmluZyAnZm9vJyBpcyBzZWxlY3RlZAotICAgICAgICAvLyBhbmQgd2lsbCBmaWxs
IHRoZSBnYXAgYmVmb3JlICdiYXInLgotICAgICAgICBQb3NpdGlvbiBzdGFydFBvcyA9IHNlbGVj
dGlvbi5zdGFydCgpOwotICAgICAgICBpZiAoc3RhcnRQb3MuZG93bnN0cmVhbSgpLmlzQ2FuZGlk
YXRlKCkpCi0gICAgICAgICAgICBzdGFydFBvcyA9IHN0YXJ0UG9zLmRvd25zdHJlYW0oKTsKLSAg
ICAgICAgUG9zaXRpb24gZW5kUG9zID0gc2VsZWN0aW9uLmVuZCgpOwotICAgICAgICBpZiAoZW5k
UG9zLnVwc3RyZWFtKCkuaXNDYW5kaWRhdGUoKSkKLSAgICAgICAgICAgIGVuZFBvcyA9IGVuZFBv
cy51cHN0cmVhbSgpOwotICAgICAgICAKLSAgICAgICAgLy8gV2UgY2FuIGdldCBpbnRvIGEgc3Rh
dGUgd2hlcmUgdGhlIHNlbGVjdGlvbiBlbmRwb2ludHMgbWFwIHRvIHRoZSBzYW1lIFZpc2libGVQ
b3NpdGlvbiB3aGVuIGEgc2VsZWN0aW9uIGlzIGRlbGV0ZWQKLSAgICAgICAgLy8gYmVjYXVzZSB3
ZSBkb24ndCB5ZXQgbm90aWZ5IHRoZSBTZWxlY3Rpb25Db250cm9sbGVyIG9mIHRleHQgcmVtb3Zh
bC4KLSAgICAgICAgaWYgKHN0YXJ0UG9zLmlzTm90TnVsbCgpICYmIGVuZFBvcy5pc05vdE51bGwo
KSAmJiBzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgIT0gc2VsZWN0aW9uLnZpc2libGVFbmQoKSkg
ewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICpzdGFydFJlbmRlcmVyID0gc3RhcnRQb3Mubm9k
ZSgpLT5yZW5kZXJlcigpOwotICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICplbmRSZW5kZXJlciA9
IGVuZFBvcy5ub2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICB2aWV3LT5zZXRTZWxlY3Rp
b24oc3RhcnRSZW5kZXJlciwgc3RhcnRQb3MubV9vZmZzZXQsIGVuZFJlbmRlcmVyLCBlbmRQb3Mu
bV9vZmZzZXQpOwotICAgICAgICB9CisgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0UG9zLmNvbnRh
aW5lci0+Y2hpbGROb2RlKHN0YXJ0UG9zLm1fb2Zmc2V0KTsKKyAgICAgICAgaWYgKCFzdGFydE5v
ZGUpCisgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydFBvcy5jb250YWluZXItPnRyYXZlcnNl
TmV4dFNpYmxpbmcoKTsKKyAgICB9CisKKyAgICAvLyBGaW5kIHRoZSBsYXN0IG5vZGUgaW4gdGhl
IHNlbGVjdGlvbi4KKyAgICBOb2RlKiBlbmROb2RlOworICAgIGlmICghZW5kUG9zLmNvbnRhaW5l
ciB8fCBlbmRQb3MuY29udGFpbmVyLT5vZmZzZXRJbkNoYXJhY3RlcnMoKSB8fCAhY2FuSGF2ZUNo
aWxkcmVuRm9yRWRpdGluZyhlbmRQb3MuY29udGFpbmVyLmdldCgpKSkKKyAgICAgICAgZW5kTm9k
ZSA9IGVuZFBvcy5jb250YWluZXIuZ2V0KCk7CisgICAgZWxzZSB7CisgICAgICAgIGVuZE5vZGUg
PSAwOworICAgICAgICBpZiAoZW5kUG9zLm1fb2Zmc2V0KQorICAgICAgICAgICAgZW5kTm9kZSA9
IGVuZFBvcy5jb250YWluZXItPmNoaWxkTm9kZShlbmRQb3MubV9vZmZzZXQgLSAxKTsKKyAgICAg
ICAgaWYgKCFlbmROb2RlKQorICAgICAgICAgICAgZW5kTm9kZSA9IGVuZFBvcy5jb250YWluZXIt
Pmxhc3REZXNjZW5kYW50KCk7CisgICAgfQorCisgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVuZGVy
ZXIgaW4gdGhlIHNlbGVjdGlvbi4KKyAgICBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVyZXIgPSAw
OworICAgIGZvciAoOyBzdGFydE5vZGU7IHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZSgpKSB7CisgICAgICAgIGlmICgoc3RhcnRSZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVu
ZGVyZXIoKSkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHN0YXJ0Tm9kZSA9PSBl
bmROb2RlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gRmluZCB0aGUgbGFz
dCByZW5kZXJlciBpbiB0aGUgc2VsZWN0aW9uLgorICAgIFJlbmRlck9iamVjdCogZW5kUmVuZGVy
ZXIgPSAwOworICAgIGZvciAoOyBlbmROb2RlOyBlbmROb2RlID0gZW5kTm9kZS0+dHJhdmVyc2VQ
cmV2aW91c05vZGUoKSkgeworICAgICAgICBpZiAoKGVuZFJlbmRlcmVyID0gZW5kTm9kZS0+cmVu
ZGVyZXIoKSkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGVuZE5vZGUgPT0gc3Rh
cnROb2RlKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLy8gUGFzcyBpbiBjaGFy
YWN0ZXIgb2Zmc2V0cyBpZiB0aGUgcmVuZGVyZXJzIGF0IHRoZSBlZGdlcyBvZiB0aGUgc2VsZWN0
aW9uIGFyZSB0ZXh0LgorICAgIGludCBzdGFydENoYXJhY3Rlck9mZnNldCA9IC0xOworICAgIGlm
IChzdGFydFJlbmRlcmVyICYmIHN0YXJ0UmVuZGVyZXItPmlzVGV4dCgpKSB7CisgICAgICAgIGlm
IChzdGFydFJlbmRlcmVyLT5ub2RlKCkgPT0gc3RhcnRQb3MuY29udGFpbmVyKQorICAgICAgICAg
ICAgc3RhcnRDaGFyYWN0ZXJPZmZzZXQgPSBzdGFydFBvcy5tX29mZnNldDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc3RhcnRDaGFyYWN0ZXJPZmZzZXQgPSAwOworICAgIH0KKyAgICBpbnQg
ZW5kQ2hhcmFjdGVyT2Zmc2V0ID0gLTE7CisgICAgaWYgKGVuZFJlbmRlcmVyICYmIGVuZFJlbmRl
cmVyLT5pc1RleHQoKSkgeworICAgICAgICBpZiAoZW5kUmVuZGVyZXItPm5vZGUoKSA9PSBlbmRQ
b3MuY29udGFpbmVyKQorICAgICAgICAgICAgZW5kQ2hhcmFjdGVyT2Zmc2V0ID0gZW5kUG9zLm1f
b2Zmc2V0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbmRDaGFyYWN0ZXJPZmZzZXQgPSBu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKICAgICB9CisKKyAgICB2aWV3LT5zZXRTZWxlY3Rp
b24oc3RhcnRSZW5kZXJlciwgc3RhcnRDaGFyYWN0ZXJPZmZzZXQsIGVuZFJlbmRlcmVyLCBlbmRD
aGFyYWN0ZXJPZmZzZXQpOwogfQogCiB2b2lkIEZyYW1lOjpjYXJldEJsaW5rVGltZXJGaXJlZChU
aW1lcjxGcmFtZT4qKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDQx
NjY2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4OCwxMyArMjg4LDkgQEAgdm9pZCBSZW5kZXJWaWV3OjphYnNvbHV0ZVF1YWRzKFZlY3Rv
cjxGbAogICAgIHF1YWRzLmFwcGVuZChGbG9hdFJlY3QoMCwgMCwgbV9sYXllci0+d2lkdGgoKSwg
bV9sYXllci0+aGVpZ2h0KCkpKTsKIH0KIAotc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJB
ZnRlclBvc2l0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCB1bnNpZ25lZCBvZmZzZXQpCitzdGF0
aWMgaW5saW5lIFJlbmRlck9iamVjdCogcmVuZGVyZXJBZnRlcihSZW5kZXJPYmplY3QqIG9iamVj
dCkKIHsKLSAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBSZW5kZXJP
YmplY3QqIGNoaWxkID0gb2JqZWN0LT5jaGlsZEF0KG9mZnNldCk7Ci0gICAgcmV0dXJuIGNoaWxk
ID8gY2hpbGQgOiBvYmplY3QtPm5leHRJblByZU9yZGVyQWZ0ZXJDaGlsZHJlbigpOworICAgIHJl
dHVybiBvYmplY3QgPyBvYmplY3QtPm5leHRJblByZU9yZGVyKCkgOiAwOwogfQogCiBJbnRSZWN0
IFJlbmRlclZpZXc6OnNlbGVjdGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50KSBj
b25zdApAQCAtMzA1LDcgKzMwMSw3IEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91
bmRzKGJvb2wKICAgICBTZWxlY3Rpb25NYXAgc2VsZWN0ZWRPYmplY3RzOwogCiAgICAgUmVuZGVy
T2JqZWN0KiBvcyA9IG1fc2VsZWN0aW9uU3RhcnQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBzdG9wID0g
cmVuZGVyZXJBZnRlclBvc2l0aW9uKG1fc2VsZWN0aW9uRW5kLCBtX3NlbGVjdGlvbkVuZFBvcyk7
CisgICAgUmVuZGVyT2JqZWN0KiBzdG9wID0gcmVuZGVyZXJBZnRlcihtX3NlbGVjdGlvbkVuZCk7
CiAgICAgd2hpbGUgKG9zICYmIG9zICE9IHN0b3ApIHsKICAgICAgICAgaWYgKChvcy0+Y2FuQmVT
ZWxlY3Rpb25MZWFmKCkgfHwgb3MgPT0gbV9zZWxlY3Rpb25TdGFydCB8fCBvcyA9PSBtX3NlbGVj
dGlvbkVuZCkgJiYgb3MtPnNlbGVjdGlvblN0YXRlKCkgIT0gU2VsZWN0aW9uTm9uZSkgewogICAg
ICAgICAgICAgLy8gQmxvY2tzIGFyZSByZXNwb25zaWJsZSBmb3IgcGFpbnRpbmcgbGluZSBnYXBz
IGFuZCBtYXJnaW4gZ2Fwcy4gVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCkBAIC0zNzks
NyArMzc1LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZQogICAg
IFNlbGVjdGVkQmxvY2tNYXAgbmV3U2VsZWN0ZWRCbG9ja3M7CiAKICAgICBSZW5kZXJPYmplY3Qq
IG9zID0gbV9zZWxlY3Rpb25TdGFydDsKLSAgICBSZW5kZXJPYmplY3QqIHN0b3AgPSByZW5kZXJl
ckFmdGVyUG9zaXRpb24obV9zZWxlY3Rpb25FbmQsIG1fc2VsZWN0aW9uRW5kUG9zKTsKKyAgICBS
ZW5kZXJPYmplY3QqIHN0b3AgPSByZW5kZXJlckFmdGVyKG1fc2VsZWN0aW9uRW5kKTsKICAgICB3
aGlsZSAob3MgJiYgb3MgIT0gc3RvcCkgewogICAgICAgICBpZiAoKG9zLT5jYW5CZVNlbGVjdGlv
bkxlYWYoKSB8fCBvcyA9PSBtX3NlbGVjdGlvblN0YXJ0IHx8IG9zID09IG1fc2VsZWN0aW9uRW5k
KSAmJiBvcy0+c2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAgICAgICAg
ICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1h
cmdpbiBnYXBzLiAgVGhleSBtdXN0IGJlIGV4YW1pbmVkIGFzIHdlbGwuCkBAIC00MTksNyArNDE1
LDcgQEAgdm9pZCBSZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24oUmVuZGVyT2JqZQogICAgIH0KIAog
ICAgIFJlbmRlck9iamVjdCogbyA9IHN0YXJ0OwotICAgIHN0b3AgPSByZW5kZXJlckFmdGVyUG9z
aXRpb24oZW5kLCBlbmRQb3MpOworICAgIHN0b3AgPSByZW5kZXJlckFmdGVyKGVuZCk7CiAKICAg
ICB3aGlsZSAobyAmJiBvICE9IHN0b3ApIHsKICAgICAgICAgaWYgKG8gIT0gc3RhcnQgJiYgbyAh
PSBlbmQgJiYgby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>