<?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>63816</bug_id>
          
          <creation_ts>2011-07-01 10:17:33 -0700</creation_ts>
          <short_desc>Remove calls to deprecatedNode in EventHandler.cpp</short_desc>
          <delta_ts>2011-11-07 18:59:37 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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>52099</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>431244</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-01 10:17:33 -0700</bug_when>
    <thetext>Refactoring to remove calls to deprecateNode in EventHandler.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431246</commentid>
    <comment_count>1</comment_count>
      <attachid>99484</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-01 10:24:37 -0700</bug_when>
    <thetext>Created attachment 99484
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431265</commentid>
    <comment_count>2</comment_count>
      <attachid>99484</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-01 11:11:31 -0700</bug_when>
    <thetext>Comment on attachment 99484
Patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        (WebCore::EventHandler::updateSelectionForMouseDrag): Replaced the call to deprecatedNode by a call to
&gt; +        containerNode because the node is only used to find the containing block via its renderer.

I don’t understand why this explanation makes the change OK. Couldn’t the container node have a different containing block than the anchor node?

&gt; Source/WebCore/page/EventHandler.cpp:339
&gt; -        if (pos.isNotNull() &amp;&amp; pos.deepEquivalent().deprecatedNode()-&gt;isDescendantOf(URLElement))
&gt; +        if (pos.isNotNull() &amp;&amp; pos.deepEquivalent().containerNode()-&gt;isDescendantOf(URLElement))

I haven’t carefully watched other deprecatedNode/containerNode conversions in the past, but this one changes behavior.

This will now give the wrong answer for a position that is a BeforeAnchor or AfterAnchor of a node that is child of the URL element. The containerNode function will return the URL element itself, and isDescandantOf will return false.

The old expression would have been true in that case.

The old code already seems wrong for BeforeChildren and AfterChildren positions.

The change in behavior may be harmless because positionForPoint never returns a BeforeAnchor or AfterAnchor position.

The code doesn’t make much sense. Why is it interesting if the container node is a descendant of the URL element? I think the real question is whether the position is inside the URL element, and we should have a function that correctly asks that question.

We’d probably need to change this from deprecatedNode-&gt;isDescendantOf(URLElement) to URLElement-&gt;contains(containerNode) to make it make sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431278</commentid>
    <comment_count>3</comment_count>
      <attachid>99484</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-01 11:21:47 -0700</bug_when>
    <thetext>Comment on attachment 99484
Patch

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

&gt;&gt; Source/WebCore/page/EventHandler.cpp:339
&gt;&gt; +        if (pos.isNotNull() &amp;&amp; pos.deepEquivalent().containerNode()-&gt;isDescendantOf(URLElement))
&gt; 
&gt; I haven’t carefully watched other deprecatedNode/containerNode conversions in the past, but this one changes behavior.
&gt; 
&gt; This will now give the wrong answer for a position that is a BeforeAnchor or AfterAnchor of a node that is child of the URL element. The containerNode function will return the URL element itself, and isDescandantOf will return false.
&gt; 
&gt; The old expression would have been true in that case.
&gt; 
&gt; The old code already seems wrong for BeforeChildren and AfterChildren positions.
&gt; 
&gt; The change in behavior may be harmless because positionForPoint never returns a BeforeAnchor or AfterAnchor position.
&gt; 
&gt; The code doesn’t make much sense. Why is it interesting if the container node is a descendant of the URL element? I think the real question is whether the position is inside the URL element, and we should have a function that correctly asks that question.
&gt; 
&gt; We’d probably need to change this from deprecatedNode-&gt;isDescendantOf(URLElement) to URLElement-&gt;contains(containerNode) to make it make sense.

Right, all these deprecatedNode/containerNode conversions will correct behavior.  In this particular case, we&apos;re interested in whether a URL element contains a Position or not.  And in that sense, it makes no sense to care about positions that are before or after an anchor element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431348</commentid>
    <comment_count>4</comment_count>
      <attachid>99504</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-01 12:30:59 -0700</bug_when>
    <thetext>Created attachment 99504
Fixed per comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431465</commentid>
    <comment_count>5</comment_count>
      <attachid>99504</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-07-01 14:45:26 -0700</bug_when>
    <thetext>Comment on attachment 99504
Fixed per comment

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        (WebCore::EventHandler::updateSelectionForMouseDrag): Replaced the call to deprecatedNode by a call to
&gt; +        containerNode because the node is only used to find the containing block via its renderer.

I don’t understand why this explanation makes the change OK. Couldn’t the container node have a different containing block than the anchor node?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431487</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-01 15:16:52 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 99504 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99504&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        (WebCore::EventHandler::updateSelectionForMouseDrag): Replaced the call to deprecatedNode by a call to
&gt; &gt; +        containerNode because the node is only used to find the containing block via its renderer.
&gt; 
&gt; I don’t understand why this explanation makes the change OK. Couldn’t the container node have a different containing block than the anchor node?

Yes.  I&apos;m correcting the behavior here because when we&apos;re deciding whether a position is inside an element or not, we shouldn&apos;t be starting its search from the anchor node.

i.e. if a position is before anchor, we shouldn&apos;t consider that position to be inside the anchor.  We have this bug all over the place in editing code, and the bug 52099 is all about fixing these bugs.

I&apos;ve written an article about this.  Please take a look at &quot;Deprecated node()&quot; in https://rniwa.com/2011-06-26/position-and-anchor-types/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435939</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-07-12 14:10:33 -0700</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447441</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 15:11:53 -0700</bug_when>
    <thetext>Ping reviewers again</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99484</attachid>
            <date>2011-07-01 10:24:37 -0700</date>
            <delta_ts>2011-07-01 12:30:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63816-20110701102436.patch</filename>
            <type>text/plain</type>
            <size>3512</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMjQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDctMDEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNhbGxzIHRvIGRlcHJlY2F0ZWROb2RlIGluIEV2ZW50
SGFuZGxlci5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYzODE2CisKKyAgICAgICAgRG9uZSByZWZhY3RvcmluZy4KKworICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0
Q2xvc2VzdFdvcmRPckxpbmtGcm9tTW91c2VFdmVudCk6IFJlcGxhY2VkIHRoZSBjYWxsIHRvIGRl
cHJlY2F0ZWROb2RlIGJ5CisgICAgICAgIGEgY2FsbCB0byBjb250YWluZXJOb2RlIGJlY2F1c2Ug
dGhlIGNvZGUgaXMgY2hlY2tpbmcgd2hldGhlciBVUkxFbGVtZW50IGNvbnRhaW5zIHRoZSBwb3Np
dGlvbiBvciBub3QuCisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZVNlbGVj
dGlvbkZvck1vdXNlRHJhZyk6IFJlcGxhY2VkIHRoZSBjYWxsIHRvIGRlcHJlY2F0ZWROb2RlIGJ5
IGEgY2FsbCB0bworICAgICAgICBjb250YWluZXJOb2RlIGJlY2F1c2UgdGhlIG5vZGUgaXMgb25s
eSB1c2VkIHRvIGZpbmQgdGhlIGNvbnRhaW5pbmcgYmxvY2sgdmlhIGl0cyByZW5kZXJlci4KKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkp
OiBSZXBsYWNlZCB0aGUgY2FsbCB0byBkZXByZWNhdGVkTm9kZSBieSBhIGNhbGwgdG8KKyAgICAg
ICAgaXNOb3ROdWxsLgorCiAyMDExLTA3LTAxICBKb29uZSBIdXIgIDxqb29uZS5odXJAY29sbGFi
b3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDkwMjAyKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzYs
NyArMzM2LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNlbGVjdENsb3Nlc3RXb3JkT3JMaQogICAg
ICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbjsKICAgICAgICAgRWxlbWVudCogVVJM
RWxlbWVudCA9IHJlc3VsdC5oaXRUZXN0UmVzdWx0KCkuVVJMRWxlbWVudCgpOwogICAgICAgICBW
aXNpYmxlUG9zaXRpb24gcG9zKGlubmVyTm9kZS0+cmVuZGVyZXIoKS0+cG9zaXRpb25Gb3JQb2lu
dChyZXN1bHQubG9jYWxQb2ludCgpKSk7Ci0gICAgICAgIGlmIChwb3MuaXNOb3ROdWxsKCkgJiYg
cG9zLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKS0+aXNEZXNjZW5kYW50T2YoVVJM
RWxlbWVudCkpCisgICAgICAgIGlmIChwb3MuaXNOb3ROdWxsKCkgJiYgcG9zLmRlZXBFcXVpdmFs
ZW50KCkuY29udGFpbmVyTm9kZSgpLT5pc0Rlc2NlbmRhbnRPZihVUkxFbGVtZW50KSkKICAgICAg
ICAgICAgIG5ld1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250
ZW50c09mTm9kZShVUkxFbGVtZW50KTsKIAogICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3Vz
ZURvd25EaXNwYXRjaGluZ1NlbGVjdFN0YXJ0KGlubmVyTm9kZSwgbmV3U2VsZWN0aW9uLCBXb3Jk
R3JhbnVsYXJpdHkpOwpAQCAtNjg2LDExICs2ODYsMTEgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVw
ZGF0ZVNlbGVjdGlvbkZvck1vdQogI2lmIEVOQUJMRShTVkcpCiAgICAgLy8gU3BlY2lhbCBjYXNl
IHRvIGxpbWl0IHNlbGVjdGlvbiB0byB0aGUgY29udGFpbmluZyBibG9jayBmb3IgU1ZHIHRleHQu
CiAgICAgLy8gRklYTUU6IElzbid0IHRoZXJlIGEgYmV0dGVyIG5vbi1TVkctc3BlY2lmaWMgd2F5
IHRvIGRvIHRoaXM/Ci0gICAgaWYgKE5vZGUqIHNlbGVjdGlvbkJhc2VOb2RlID0gbmV3U2VsZWN0
aW9uLmJhc2UoKS5kZXByZWNhdGVkTm9kZSgpKQotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBz
ZWxlY3Rpb25CYXNlUmVuZGVyZXIgPSBzZWxlY3Rpb25CYXNlTm9kZS0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIGlmIChzZWxlY3Rpb25CYXNlUmVuZGVyZXItPmlzU1ZHVGV4dCgpKQotICAgICAg
ICAgICAgICAgIGlmICh0YXJnZXQtPnJlbmRlcmVyKCktPmNvbnRhaW5pbmdCbG9jaygpICE9IHNl
bGVjdGlvbkJhc2VSZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoTm9kZSogc2VsZWN0aW9uQmFzZU5vZGUgPSBuZXdTZWxlY3Rp
b24uYmFzZSgpLmNvbnRhaW5lck5vZGUoKSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIGJhc2VS
ZW5kZXJlciA9IHNlbGVjdGlvbkJhc2VOb2RlLT5yZW5kZXJlcigpOworICAgICAgICBpZiAoYmFz
ZVJlbmRlcmVyICYmIGJhc2VSZW5kZXJlci0+aXNTVkdUZXh0KCkgJiYgdGFyZ2V0LT5yZW5kZXJl
cigpLT5jb250YWluaW5nQmxvY2soKSAhPSBiYXNlUmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygp
KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KICNlbmRpZgogCiAgICAgaWYgKG1fc2VsZWN0
aW9uSW5pdGlhdGlvblN0YXRlID09IEhhdmVOb3RTdGFydGVkU2VsZWN0aW9uICYmICFkaXNwYXRj
aFNlbGVjdFN0YXJ0KHRhcmdldCkpCkBAIC0yMjg2LDcgKzIyODYsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGCiAgICAgRnJhbWVTZWxlY3Rpb24qIHNlbGVjdGlv
biA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOwogICAgIFBvc2l0aW9uIHN0YXJ0ID0gc2VsZWN0aW9u
LT5zZWxlY3Rpb24oKS5zdGFydCgpOwogCi0gICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkg
JiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+aXNSYW5n
ZSgpKSkgeworICAgIGlmIChzdGFydC5pc05vdE51bGwoKSAmJiAoc2VsZWN0aW9uLT5yb290RWRp
dGFibGVFbGVtZW50KCkgfHwgc2VsZWN0aW9uLT5pc1JhbmdlKCkpKSB7CiAgICAgICAgIFJlZlB0
cjxSYW5nZT4gc2VsZWN0aW9uUmFuZ2UgPSBzZWxlY3Rpb24tPnRvTm9ybWFsaXplZFJhbmdlKCk7
CiAgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0gbV9mcmFtZS0+ZWRpdG9yKCktPmZpcnN0UmVj
dEZvclJhbmdlKHNlbGVjdGlvblJhbmdlLmdldCgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99504</attachid>
            <date>2011-07-01 12:30:59 -0700</date>
            <delta_ts>2011-11-07 18:59:37 -0800</delta_ts>
            <desc>Fixed per comment</desc>
            <filename>bug-63816-20110701123058.patch</filename>
            <type>text/plain</type>
            <size>3597</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMjQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDctMDEgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNhbGxzIHRvIGRlcHJlY2F0ZWROb2RlIGluIEV2ZW50
SGFuZGxlci5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYzODE2CisKKyAgICAgICAgRG9uZSByZWZhY3RvcmluZy4KKworICAgICAgICAqIHBhZ2Uv
RXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VsZWN0
Q2xvc2VzdFdvcmRPckxpbmtGcm9tTW91c2VFdmVudCk6IFJlcGxhY2VkIHRoZSBjYWxsIHRvIGRl
cHJlY2F0ZWROb2RlIGJ5CisgICAgICAgIGEgY2FsbCB0byBjb250YWluZXJOb2RlIGJlY2F1c2Ug
dGhlIGNvZGUgaXMgY2hlY2tpbmcgd2hldGhlciBVUkxFbGVtZW50IGNvbnRhaW5zIHRoZSBwb3Np
dGlvbiBvciBub3QuCisgICAgICAgIFdlIHNob3VsZG4ndCBjYXJlIGFib3V0IHBvc2l0aW9ucyB0
aGF0IGFyZSBiZWZvcmUgYWZ0ZXIgVVJMRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6dXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEcmFnKTogUmVwbGFjZWQgdGhlIGNhbGwg
dG8gZGVwcmVjYXRlZE5vZGUgYnkgYSBjYWxsIHRvCisgICAgICAgIGNvbnRhaW5lck5vZGUgYmVj
YXVzZSB0aGUgbm9kZSBpcyBvbmx5IHVzZWQgdG8gZmluZCB0aGUgY29udGFpbmluZyBibG9jayB2
aWEgaXRzIHJlbmRlcmVyLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29u
dGV4dE1lbnVFdmVudEZvcktleSk6IFJlcGxhY2VkIHRoZSBjYWxsIHRvIGRlcHJlY2F0ZWROb2Rl
IGJ5IGEgY2FsbCB0bworICAgICAgICBpc05vdE51bGwuCisKIDIwMTEtMDctMDEgIEpvb25lIEh1
ciAgPGpvb25lLmh1ckBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
dGluIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2
aXNpb24gOTAyMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VsZWN0
Q2xvc2VzdFdvcmRPckxpCiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uOwog
ICAgICAgICBFbGVtZW50KiBVUkxFbGVtZW50ID0gcmVzdWx0LmhpdFRlc3RSZXN1bHQoKS5VUkxF
bGVtZW50KCk7CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MoaW5uZXJOb2RlLT5yZW5kZXJl
cigpLT5wb3NpdGlvbkZvclBvaW50KHJlc3VsdC5sb2NhbFBvaW50KCkpKTsKLSAgICAgICAgaWYg
KHBvcy5pc05vdE51bGwoKSAmJiBwb3MuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgp
LT5pc0Rlc2NlbmRhbnRPZihVUkxFbGVtZW50KSkKKyAgICAgICAgaWYgKHBvcy5pc05vdE51bGwo
KSAmJiBVUkxFbGVtZW50ICYmIFVSTEVsZW1lbnQtPmNvbnRhaW5zKHBvcy5kZWVwRXF1aXZhbGVu
dCgpLmNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAgICAgICBuZXdTZWxlY3Rpb24gPSBWaXNpYmxl
U2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoVVJMRWxlbWVudCk7CiAKICAg
ICAgICAgdXBkYXRlU2VsZWN0aW9uRm9yTW91c2VEb3duRGlzcGF0Y2hpbmdTZWxlY3RTdGFydChp
bm5lck5vZGUsIG5ld1NlbGVjdGlvbiwgV29yZEdyYW51bGFyaXR5KTsKQEAgLTY4NiwxMSArNjg2
LDExIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVTZWxlY3Rpb25Gb3JNb3UKICNpZiBFTkFC
TEUoU1ZHKQogICAgIC8vIFNwZWNpYWwgY2FzZSB0byBsaW1pdCBzZWxlY3Rpb24gdG8gdGhlIGNv
bnRhaW5pbmcgYmxvY2sgZm9yIFNWRyB0ZXh0LgogICAgIC8vIEZJWE1FOiBJc24ndCB0aGVyZSBh
IGJldHRlciBub24tU1ZHLXNwZWNpZmljIHdheSB0byBkbyB0aGlzPwotICAgIGlmIChOb2RlKiBz
ZWxlY3Rpb25CYXNlTm9kZSA9IG5ld1NlbGVjdGlvbi5iYXNlKCkuZGVwcmVjYXRlZE5vZGUoKSkK
LSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogc2VsZWN0aW9uQmFzZVJlbmRlcmVyID0gc2VsZWN0
aW9uQmFzZU5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBpZiAoc2VsZWN0aW9uQmFzZVJl
bmRlcmVyLT5pc1NWR1RleHQoKSkKLSAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LT5yZW5kZXJl
cigpLT5jb250YWluaW5nQmxvY2soKSAhPSBzZWxlY3Rpb25CYXNlUmVuZGVyZXItPmNvbnRhaW5p
bmdCbG9jaygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgaWYgKE5vZGUqIHNl
bGVjdGlvbkJhc2VOb2RlID0gbmV3U2VsZWN0aW9uLmJhc2UoKS5jb250YWluZXJOb2RlKCkpIHsK
KyAgICAgICAgUmVuZGVyT2JqZWN0KiBiYXNlUmVuZGVyZXIgPSBzZWxlY3Rpb25CYXNlTm9kZS0+
cmVuZGVyZXIoKTsKKyAgICAgICAgaWYgKGJhc2VSZW5kZXJlciAmJiBiYXNlUmVuZGVyZXItPmlz
U1ZHVGV4dCgpICYmIHRhcmdldC0+cmVuZGVyZXIoKS0+Y29udGFpbmluZ0Jsb2NrKCkgIT0gYmFz
ZVJlbmRlcmVyLT5jb250YWluaW5nQmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9
CiAjZW5kaWYKIAogICAgIGlmIChtX3NlbGVjdGlvbkluaXRpYXRpb25TdGF0ZSA9PSBIYXZlTm90
U3RhcnRlZFNlbGVjdGlvbiAmJiAhZGlzcGF0Y2hTZWxlY3RTdGFydCh0YXJnZXQpKQpAQCAtMjI4
Niw3ICsyMjg2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50Rgog
ICAgIEZyYW1lU2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBtX2ZyYW1lLT5zZWxlY3Rpb24oKTsKICAg
ICBQb3NpdGlvbiBzdGFydCA9IHNlbGVjdGlvbi0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKIAotICAg
IGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgpICYmIChzZWxlY3Rpb24tPnJvb3RFZGl0YWJsZUVs
ZW1lbnQoKSB8fCBzZWxlY3Rpb24tPmlzUmFuZ2UoKSkpIHsKKyAgICBpZiAoc3RhcnQuaXNOb3RO
dWxsKCkgJiYgKHNlbGVjdGlvbi0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIHx8IHNlbGVjdGlvbi0+
aXNSYW5nZSgpKSkgewogICAgICAgICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvblJhbmdlID0gc2Vs
ZWN0aW9uLT50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9
IG1fZnJhbWUtPmVkaXRvcigpLT5maXJzdFJlY3RGb3JSYW5nZShzZWxlY3Rpb25SYW5nZS5nZXQo
KSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>