<?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>36901</bug_id>
          
          <creation_ts>2010-03-31 13:43:04 -0700</creation_ts>
          <short_desc>RVCT generates incorrect code for method Range::operator== when compiler optimizations are enabled</short_desc>
          <delta_ts>2010-04-05 08:44:44 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>loki</cc>
    
    <cc>manyoso</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>206700</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-31 13:43:04 -0700</bug_when>
    <thetext>As of RVCT 4.0 (build 697), the method Range::operator== is compiled incorrectly with optimizations. In particular, the if-conditional &quot;if (!&amp;a || !&amp;b)&quot; seems to be optimized away.

This is problematic because VisibleSelection::toNormalizedRange() can return a PassRefPtr&lt;Range&gt; to a null pointer by line 132 &lt;http://trac.webkit.org/browser/trunk/WebCore/editing/VisibleSelection.cpp?rev=56825#L132&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206750</commentid>
    <comment_count>1</comment_count>
      <attachid>52214</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-03-31 15:10:24 -0700</bug_when>
    <thetext>Created attachment 52214
Patch with manual test case

Not sure how to test this with DRT so I included a manual test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206823</commentid>
    <comment_count>2</comment_count>
      <attachid>52214</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-31 17:01:35 -0700</bug_when>
    <thetext>Comment on attachment 52214
Patch with manual test case

It&apos;s illegal to dereference a null pointer and make a reference from it. So code that checks:

    if (!&amp;a || !&amp;b)

is not legal C++. The right way to fix this is to restructure our code so we don&apos;t rely on this sort of illegal C++. It&apos;s OK with me to do this compiler-specific optimization hacking as an interim measure, but it seems like a bad strategy. Much better would be to eliminate this.

One simple way to do this would be to eliminate the Range operator== entirely and add a named function (isEqual or areEqual or something along those lines) that takes range pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207226</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-01 10:16:20 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 52214 [details])
&gt; It&apos;s illegal to dereference a null pointer and make a reference from it. So
&gt; code that checks:
&gt; 
&gt;     if (!&amp;a || !&amp;b)
&gt; 
&gt; is not legal C++. The right way to fix this is to restructure our code so we
&gt; don&apos;t rely on this sort of illegal C++. It&apos;s OK with me to do this
&gt; compiler-specific optimization hacking as an interim measure, but it seems like
&gt; a bad strategy. Much better would be to eliminate this.

I agree we should eliminate this.

&gt; One simple way to do this would be to eliminate the Range operator== entirely
&gt; and add a named function (isEqual or areEqual or something along those lines)
&gt; that takes range pointers.

Will add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207231</commentid>
    <comment_count>4</comment_count>
      <attachid>52308</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-01 10:22:29 -0700</bug_when>
    <thetext>Created attachment 52308
Patch with manual test case

Removes Range::operator== and Range::operator !=. Adds function areRangesEqual.

This patch address all the call sites in the Mac port. I have not verified this for all the other ports. Hopefully, the EWS bots can check this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207433</commentid>
    <comment_count>5</comment_count>
      <attachid>52308</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-01 15:06:26 -0700</bug_when>
    <thetext>Comment on attachment 52308
Patch with manual test case

Clearing flags on attachment: 52308

Committed r56940: &lt;http://trac.webkit.org/changeset/56940&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207434</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-01 15:06:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207458</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-01 16:01:55 -0700</bug_when>
    <thetext>I forgot to comment on the manual test case in this bug.

There are plenty of automated test cases that exercise finding text, so I think this could be automated.

LayoutTests/text/find-case-folding.html for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207463</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-01 16:08:19 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I forgot to comment on the manual test case in this bug.
&gt; 
&gt; There are plenty of automated test cases that exercise finding text, so I think
&gt; this could be automated.
&gt; 
&gt; LayoutTests/text/find-case-folding.html for example.

 I will look into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208395</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-04-04 23:10:21 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I forgot to comment on the manual test case in this bug.
&gt; 
&gt; There are plenty of automated test cases that exercise finding text, so I think
&gt; this could be automated.
&gt; 
&gt; LayoutTests/text/find-case-folding.html for example.

We cannot test this with DRT (at least not via document.execCommand(&quot;FindString&quot;, ...)) as WebCore::Frame::findString is not called with startInSelection := true (*). The call flow has the form: ... =&gt; WebCore::executeFindString =&gt; WebCore::Frame::findString. In particular, startInSelection is hardcoded to false in method WebCore::executeFindString, &lt;http://trac.webkit.org/browser/trunk/WebCore/editing/EditorCommand.cpp?rev=55566#L399&gt;.

In contrast, when you show the find banner in Safari and perform a search, WebCore::Frame::findString is called with startInSelection := true. The call flow has the form: -[WebView(WebPendingPublic) searchFor:direction:caseSensitive:wrap:startInSelection:] =&gt; -[WebHTMLView(WebDocumentPrivateProtocols) searchFor:direction:caseSensitive:wrap:startInSelection:] =&gt; WebCore::Frame::findString. Notice the value of startInSelection is passed in as a parameter. I cannot see the code of the calling functions of  -[WebView(WebPendingPublic) searchFor:direction:caseSensitive:wrap:startInSelection:] (**) to determine how this value is set since the calling functions are outside of WebKit. I am not too familiar with EditorCommand, but we may be able to use similar logic as in (**)  to set the value of startInSelection in WebCore::executeFindString. Alternatively, we may consider allowing a user to explicitly specify this parameter.

Therefore, a manual test is needed to reproduce the crash/verify the fix.

(*) Notice, the crash occurs when we evaluate the second conjunct of the if-condition on line 1389 of Frame.cpp (i.e. &quot;*VisibleSelection(resultRange.get()).toNormalizedRange() == *selection.toNormalizedRange()&quot;), and by the definition of logical AND this occurs when the first conjunct is true (i.e. startInSelection := true).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208491</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-05 08:44:44 -0700</bug_when>
    <thetext>OK, I see. There is no way to test startInSelection true cases with execCommand at this time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52214</attachid>
            <date>2010-03-31 15:10:24 -0700</date>
            <delta_ts>2010-04-01 10:22:29 -0700</delta_ts>
            <desc>Patch with manual test case</desc>
            <filename>Bug36901.patch</filename>
            <type>text/plain</type>
            <size>2806</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Njg3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMtMzEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjkwMQorCisgICAgICAgIEZpeGVz
IGFuIGlzc3VlIHdoZXJlIHRoZSBtZXRob2QgUmFuZ2U6Om9wZXJhdG9yPT0gcmV0dXJucyBhbiBp
bmNvcnJlY3QKKyAgICAgICAgcmVzdWx0IHdoZW4gZWl0aGVyICZhLCBvciAmYiBpcyBlcXVhbCAw
IHdoZW4gY29tcGlsaW5nIHVuZGVyIFJWQ1Qgd2l0aAorICAgICAgICBvcHRpbWl6YXRpb25zIChh
cyBvZiB2ZXJzaW9uIDQuMCAtIGJ1aWxkIDY5NykuCisKKyAgICAgICAgVGVzdCBjYXNlOiBtYW51
YWwtdGVzdHMvY3Jhc2gtb24tZmluZC13aXRoLW5vLXNlbGVjdGlvbi5odG1sCisKKyAgICAgICAg
KiBkb20vUmFuZ2UuY3BwOiBTdXJyb3VuZGVkIG1ldGhvZCBSYW5nZTo6b3BlcmF0b3I9PSB3aXRo
ICNwcmFnbWEgcHVzaCwKKyAgICAgICAgI3ByYWdtYSBPMC8jcHJhZ21hIHBvcCB3aGVuIGNvbXBp
bGluZyB3aXRoIHRoZSBSVkNUIGNvbXBpbGVyLgorICAgICAgICAqIG1hbnVhbC10ZXN0cy9maW5k
LXdpdGgtbm8tc2VsZWN0aW9uLWNyYXNoLmh0bWw6IEFkZGVkLgorCiAyMDEwLTAzLTMxICBKaWFu
IExpICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkg
VGl0b3YuCkluZGV4OiBXZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiA1Njg0OSkKKysrIFdlYkNvcmUvZG9tL1JhbmdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTY2MSw2ICsxNjYxLDEzIEBAIHZvaWQgUmFuZ2U6OmZvcm1h
dEZvckRlYnVnZ2VyKGNoYXIqIGJ1ZmYKICN1bmRlZiBGb3JtYXRCdWZmZXJTaXplCiAjZW5kaWYK
IAorI2lmIENPTVBJTEVSKFJWQ1QpCisvLyBGSVhNRTogVGhlIGlmLWNvbmRpdGlvbiAiaWYgKCEm
YSB8fCAhJmIpIiBpcyBpbmNvcnJlY3RseSBjb21waWxlZCB3aGVuIG9wdGltaXphdGlvbnMgYXJl
CisvLyBlbmFibGVkIGFzIG9mIFJWQ1QgNC4wIChCdWlsZCA2OTcpLiBTbywgd2UgZGlzYWJsZSBj
b21waWxlciBvcHRpbWl6YXRpb25zIGZvciB0aGlzIG1ldGhvZC4KKy8vIFNlZSA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2OTAxPi4KKyNwcmFnbWEgcHVzaAorI3By
YWdtYSBPMAorI2VuZGlmCiBib29sIG9wZXJhdG9yPT0oY29uc3QgUmFuZ2UmIGEsIGNvbnN0IFJh
bmdlJiBiKQogewogICAgIGlmICgmYSA9PSAmYikKQEAgLTE2NzEsNiArMTY3OCw5IEBAIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBSYW5nZSYgYSwgY29uc3QgUmEKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiBhLnN0YXJ0UG9zaXRpb24oKSA9PSBiLnN0YXJ0UG9zaXRpb24oKSAmJiBh
LmVuZFBvc2l0aW9uKCkgPT0gYi5lbmRQb3NpdGlvbigpOwogfQorI2lmIENPTVBJTEVSKFJWQ1Qp
CisjcHJhZ21hIHBvcAorI2VuZGlmCiAKIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlT2ZDb250ZW50
cyhOb2RlKiBub2RlKQogewpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvY3Jhc2gtb24tZmlu
ZC13aXRoLW5vLXNlbGVjdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWFudWFsLXRl
c3RzL2NyYXNoLW9uLWZpbmQtd2l0aC1uby1zZWxlY3Rpb24uaHRtbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvbWFudWFsLXRlc3RzL2NyYXNoLW9uLWZpbmQtd2l0aC1uby1zZWxlY3Rpb24uaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyB0ZXN0IGNhbiBiZSB1c2VkIHRvIHZlcmlmeSB0aGF0IHdlIGRvIG5v
dCBjcmFzaCB3aGVuIHNlYXJjaGluZyBmb3IgdGV4dCBvbiBhIHBhZ2Ugd2hlbiBub3RoaW5nIG9u
IHRoZSBwYWdlIGlzIGN1cnJlbnRseSBzZWxlY3RlZC48L3A+Cis8b2w+CisgICAgPGxpPkVuc3Vy
ZSB0aGF0IHlvdSBoYXZlIG5vdCBjbGlja2VkIGFueXdoZXJlIG9uIHRoaXMgcGFnZSBhbmQgdGhh
dCBub3RoaW5nIG9uIHRoaXMgcGFnZSBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuPC9saT4KKyAgICA8
bGk+U2VhcmNoIGZvciB0aGUgd29yZCAmcXVvdDtjcmFzaCZxdW90OyBpbiB0aGlzIHBhZ2UgKElu
IFNhZmFyaSBmb3IgTWFjLCBzZWxlY3QgRWRpdC0+RmluZC0+RmluZCBvciBwcmVzcyBDbWQtRiBv
biB5b3VyIGtleWJvYXJkIHRvIG9wZW4gdGhlIEZpbmQgYmFubmVyIHRvIHNlYXJjaCBmb3IgYSB3
b3JkIGluIHRoZSBwYWdlKS4KKyAgICA8bGk+VGhpcyB0ZXN0IFBBU1NFRCBpZiB3ZSBkbyBub3Qg
Y3Jhc2ggYW5kIHRoZSB3b3JkICZxdW90O2NyYXNoJnF1b3Q7IGlzIGhpZ2hsaWdodGVkIGluIGF0
IGxlYXN0IHRoZSBmaXJzdCBzZW50ZW5jZSBvbiB0aGlzIHBhZ2UuPC9saT4KKzwvb2w+Cis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52308</attachid>
            <date>2010-04-01 10:22:29 -0700</date>
            <delta_ts>2010-04-01 15:06:26 -0700</delta_ts>
            <desc>Patch with manual test case</desc>
            <filename>Bug36901_1.patch</filename>
            <type>text/plain</type>
            <size>5330</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NjkxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQtMDEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjkwMQorCisgICAgICAgIFJlbW92
ZWQgZnVuY3Rpb25zIFJhbmdlOjpvcGVyYXRvciA9PSBhbmQgUmFuZ2U6Om9wZXJhdG9yICE9IGFz
IHRoZXkKKyAgICAgICAgd2VyZSB1c2luZyBDKysgY29kZSB0aGF0IHdhcyBub3Qgc291bmQgYW5k
IGhlbmNlIG1heSBoYXZlIHVuZGVmaW5lZAorICAgICAgICBiZWhhdmlvci4KKworICAgICAgICBU
ZXN0IGNhc2U6IG1hbnVhbC10ZXN0cy9jcmFzaC1vbi1maW5kLXdpdGgtbm8tc2VsZWN0aW9uLmh0
bWwKKworICAgICAgICAqIGRvbS9SYW5nZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjphcmVSYW5n
ZXNFcXVhbCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9SYW5nZS5oOgorICAgICAgICAqIGVkaXRp
bmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6IE1vZGlmaWVk
IHRvIGNhbGwgV2ViQ29yZTo6YXJlUmFuZ2VzRXF1YWwuCisgICAgICAgICogbWFudWFsLXRlc3Rz
L2NyYXNoLW9uLWZpbmQtd2l0aC1uby1zZWxlY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
cGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZmluZFN0cmluZyk6IE1v
ZGlmaWVkIHRvIGNhbGwgV2ViQ29yZTo6YXJlUmFuZ2VzRXF1YWwuCisKIDIwMTAtMDQtMDEgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2hpbmljaGlybyBIYW1hamkuCkluZGV4OiBXZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiA1Njg0OSkKKysrIFdlYkNvcmUv
ZG9tL1JhbmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY2MSwxNSArMTY2MSwxMyBAQCB2b2lk
IFJhbmdlOjpmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmCiAjdW5kZWYgRm9ybWF0QnVmZmVy
U2l6ZQogI2VuZGlmCiAKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBSYW5nZSYgYSwgY29uc3QgUmFu
Z2UmIGIpCitib29sIGFyZVJhbmdlc0VxdWFsKGNvbnN0IFJhbmdlKiBhLCBjb25zdCBSYW5nZSog
YikKIHsKLSAgICBpZiAoJmEgPT0gJmIpCisgICAgaWYgKGEgPT0gYikKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgLy8gTm90IHN0cmljdGx5IGxlZ2FsIEMrKywgYnV0IGluIHByYWN0aWNlIHRo
aXMgY2FuIGhhcHBlbiwgYW5kIHRoaXMgY2hlY2sgd29ya3MKLSAgICAvLyBmaW5lIHdpdGggR0ND
IHRvIGRldGVjdCBzdWNoIGNhc2VzIGFuZCByZXR1cm4gZmFsc2UgcmF0aGVyIHRoYW4gY3Jhc2hp
bmcuCi0gICAgaWYgKCEmYSB8fCAhJmIpCisgICAgaWYgKCFhIHx8ICFiKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGEuc3RhcnRQb3NpdGlvbigpID09IGIuc3RhcnRQb3NpdGlv
bigpICYmIGEuZW5kUG9zaXRpb24oKSA9PSBiLmVuZFBvc2l0aW9uKCk7CisgICAgcmV0dXJuIGEt
PnN0YXJ0UG9zaXRpb24oKSA9PSBiLT5zdGFydFBvc2l0aW9uKCkgJiYgYS0+ZW5kUG9zaXRpb24o
KSA9PSBiLT5lbmRQb3NpdGlvbigpOwogfQogCiBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZU9mQ29u
dGVudHMoTm9kZSogbm9kZSkKSW5kZXg6IFdlYkNvcmUvZG9tL1JhbmdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vUmFuZ2UuaAkocmV2aXNpb24gNTY4NDkpCisrKyBXZWJDb3JlL2RvbS9S
YW5nZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsOCArMTUzLDcgQEAgcHJpdmF0ZToKIAogUGFz
c1JlZlB0cjxSYW5nZT4gcmFuZ2VPZkNvbnRlbnRzKE5vZGUqKTsKIAotYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJhbmdlJiwgY29uc3QgUmFuZ2UmKTsKLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmFuZ2UmIGEsIGNvbnN0IFJhbmdlJiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KK2Jvb2wg
YXJlUmFuZ2VzRXF1YWwoY29uc3QgUmFuZ2UqLCBjb25zdCBSYW5nZSopOwogCiB9IC8vIG5hbWVz
cGFjZQogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gNTY4NDkpCisrKyBXZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcwLDcgKzk3MCw3IEBAIFN0cmlu
ZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAKICAgICBOb2RlKiBib2R5
ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoUG9zaXRpb24oY29tbW9uQW5jZXN0b3IsIDApLCBib2R5
VGFnKTsKICAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nr
cywgbm90IGp1c3QgdGhlIGJvZHkuCi0gICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5
ICYmICpWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoYm9keSku
dG9Ob3JtYWxpemVkUmFuZ2UoKSA9PSAqdXBkYXRlZFJhbmdlID8gYm9keSA6IDA7CisgICAgTm9k
ZSogZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxl
Y3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpLCB1cGRhdGVkUmFuZ2UuZ2V0KCkpID8gYm9keSA6IDA7CiAgICAgUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBmdWxseVNlbGVjdGVkUm9vdFN0eWxlID0gZnVsbHlT
ZWxlY3RlZFJvb3QgPyBzdHlsZUZyb21NYXRjaGVkUnVsZXNBbmRJbmxpbmVEZWNsKGZ1bGx5U2Vs
ZWN0ZWRSb290KSA6IDA7CiAgICAgaWYgKGFubm90YXRlICYmIGZ1bGx5U2VsZWN0ZWRSb290KSB7
CiAgICAgICAgIGlmIChzaG91bGRJbmNsdWRlV3JhcHBlckZvckZ1bGx5U2VsZWN0ZWRSb290KGZ1
bGx5U2VsZWN0ZWRSb290LCBmdWxseVNlbGVjdGVkUm9vdFN0eWxlLmdldCgpKSkKSW5kZXg6IFdl
YkNvcmUvbWFudWFsLXRlc3RzL2NyYXNoLW9uLWZpbmQtd2l0aC1uby1zZWxlY3Rpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL21hbnVhbC10ZXN0cy9jcmFzaC1vbi1maW5kLXdpdGgtbm8t
c2VsZWN0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL21hbnVhbC10ZXN0cy9jcmFz
aC1vbi1maW5kLXdpdGgtbm8tc2VsZWN0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdCBjYW4g
YmUgdXNlZCB0byB2ZXJpZnkgdGhhdCB3ZSBkbyBub3QgY3Jhc2ggd2hlbiBzZWFyY2hpbmcgZm9y
IHRleHQgb24gYSBwYWdlIHdoZW4gbm90aGluZyBvbiB0aGUgcGFnZSBpcyBjdXJyZW50bHkgc2Vs
ZWN0ZWQuPC9wPgorPG9sPgorICAgIDxsaT5FbnN1cmUgdGhhdCB5b3UgaGF2ZSBub3QgY2xpY2tl
ZCBhbnl3aGVyZSBvbiB0aGlzIHBhZ2UgYW5kIHRoYXQgbm90aGluZyBvbiB0aGlzIHBhZ2UgaXMg
Y3VycmVudGx5IHNlbGVjdGVkLjwvbGk+CisgICAgPGxpPlNlYXJjaCBmb3IgdGhlIHdvcmQgJnF1
b3Q7Y3Jhc2gmcXVvdDsgaW4gdGhpcyBwYWdlIChJbiBTYWZhcmkgZm9yIE1hYywgc2VsZWN0IEVk
aXQtPkZpbmQtPkZpbmQgb3IgcHJlc3MgQ21kLUYgb24geW91ciBrZXlib2FyZCB0byBvcGVuIHRo
ZSBGaW5kIGJhbm5lciB0byBzZWFyY2ggZm9yIGEgd29yZCBpbiB0aGUgcGFnZSkuCisgICAgPGxp
PlRoaXMgdGVzdCBQQVNTRUQgaWYgd2UgZG8gbm90IGNyYXNoIGFuZCB0aGUgd29yZCAmcXVvdDtj
cmFzaCZxdW90OyBpcyBoaWdobGlnaHRlZCBpbiBhdCBsZWFzdCB0aGUgZmlyc3Qgc2VudGVuY2Ug
b24gdGhpcyBwYWdlLjwvbGk+Cis8L29sPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShy
ZXZpc2lvbiA1Njg0OSkKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzODEsNyArMTM4MSw3IEBAIGJvb2wgRnJhbWU6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXIKICAgICAvLyBJZiB3ZSBzdGFydGVkIGluIHRoZSBzZWxlY3Rpb24gYW5kIHRoZSBmb3Vu
ZCByYW5nZSBleGFjdGx5IG1hdGNoZXMgdGhlIGV4aXN0aW5nIHNlbGVjdGlvbiwgZmluZCBhZ2Fp
bi4KICAgICAvLyBCdWlsZCBhIHNlbGVjdGlvbiB3aXRoIHRoZSBmb3VuZCByYW5nZSB0byByZW1v
dmUgY29sbGFwc2VkIHdoaXRlc3BhY2UuCiAgICAgLy8gQ29tcGFyZSByYW5nZXMgaW5zdGVhZCBv
ZiBzZWxlY3Rpb24gb2JqZWN0cyB0byBpZ25vcmUgdGhlIHdheSB0aGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbiB3YXMgbWFkZS4KLSAgICBpZiAoc3RhcnRJblNlbGVjdGlvbiAmJiAqVmlzaWJsZVNl
bGVjdGlvbihyZXN1bHRSYW5nZS5nZXQoKSkudG9Ob3JtYWxpemVkUmFuZ2UoKSA9PSAqc2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkpIHsKKyAgICBpZiAoc3RhcnRJblNlbGVjdGlvbiAmJiBh
cmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uKHJlc3VsdFJhbmdlLmdldCgpKS50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSkp
IHsKICAgICAgICAgc2VhcmNoUmFuZ2UgPSByYW5nZU9mQ29udGVudHMoZG9jdW1lbnQoKSk7CiAg
ICAgICAgIGlmIChmb3J3YXJkKQogICAgICAgICAgICAgc2V0U3RhcnQoc2VhcmNoUmFuZ2UuZ2V0
KCksIHNlbGVjdGlvbi52aXNpYmxlRW5kKCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>