<?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>38841</bug_id>
          
          <creation_ts>2010-05-10 06:05:33 -0700</creation_ts>
          <short_desc>Ignore invalid values for various CanvasRenderingContext2D properties</short_desc>
          <delta_ts>2010-05-14 01:41:59 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HTML5</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>35784</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>223268</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-10 06:05:33 -0700</bug_when>
    <thetext>(HTML5 spec 4.8.10.1) The following properties should ignore invalid values:
lineWidth, miterLimit, shadowOffsetX, shadowOffsetY, shadowBlur</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223271</commentid>
    <comment_count>1</comment_count>
      <attachid>55546</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-10 06:12:54 -0700</bug_when>
    <thetext>Created attachment 55546
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223323</commentid>
    <comment_count>2</comment_count>
      <attachid>55546</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-10 08:26:42 -0700</bug_when>
    <thetext>Comment on attachment 55546
Proposed patch

&gt; -    if (!(width &gt; 0))
&gt; +    if (!(width &gt; 0) || isnan(width) || isinf(width))
&gt;          return;

This expression should already work properly for NAN. The expression &quot;width &gt; 0&quot; returns false for NAN and so the function returns. So adding the isnan check is not helpful. Unless perhaps we are working around a bug on some platform.

We normally use isfinite for checks like this to check both NAN and infinity at once. I think the two best ways to write this are:

    if (!(isfinite(width) &amp;&amp; width &gt; 0))

or

    if (!(width &gt; 0) || isinf(width))

I prefer the first.

&gt; -    if (!(limit &gt; 0))
&gt; +    if (!(limit &gt; 0) || isnan(limit) || isinf(limit))
&gt;          return;

Same comment.

&gt; +    if (isnan(x) || isinf(x))
&gt; +        return;

    if (!isfinite(x))
        return;

&gt; +    if (isnan(y) || isinf(y))
&gt; +        return;

Ditto.

&gt; +    if (!(blur &gt;= 0) || isnan(blur) || isinf(blur))
&gt; +        return;

Ditto.

I&apos;d prefer not to land the redundant isnan checks, so review-.

As far as the test cases are concerned, it&apos;s typically better to write shouldBe tests so you can see what&apos;s being tested. So I like to make functions that take arguments that are the special values rather than just having repeated results. Here&apos;s an example:

    function trySettingMiterLimit(value)
    {
        context.miterLimit = 1.5;
        context.miterLimit = value;
        return context.miterLimit;
    }


    shouldBe(&quot;trySettingMiterLimit(1)&quot;, &quot;1&quot;);
    shouldBe(&quot;trySettingMiterLimit(0)&quot;, &quot;1.5&quot;);
    shouldBe(&quot;trySettingMiterLimit(-1)&quot;, &quot;1.5&quot;);
    shouldBe(&quot;trySettingMiterLimit(Infinity)&quot;, &quot;1.5&quot;);
    shouldBe(&quot;trySettingMiterLimit(NaN)&quot;, &quot;1.5&quot;);
    shouldBe(&quot;trySettingMiterLimit(&apos;string&apos;)&quot;, &quot;1.5&quot;);
    shouldBe(&quot;trySettingMiterLimit(true)&quot;, &quot;1&quot;);
    shouldBe(&quot;trySettingMiterLimit(false)&quot;, &quot;0&quot;);

This way the test output easier to understand, and can even encourage adding more test cases like the ones I added for strings and booleans.

Also, please run the test before making any code change. Doing that would have shown you that NaN was already correctly handled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223428</commentid>
    <comment_count>3</comment_count>
      <attachid>55582</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-10 11:49:08 -0700</bug_when>
    <thetext>Created attachment 55582
Proposed patch v2

Updated patch, all comments addressed. Thanks for the review :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223640</commentid>
    <comment_count>4</comment_count>
      <attachid>55582</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-10 18:18:59 -0700</bug_when>
    <thetext>Comment on attachment 55582
Proposed patch v2

&gt; +PASS ctx.miterLimit is 1.5
&gt; +PASS ctx.miterLimit is 1.5
&gt; +PASS ctx.miterLimit is 1.5
&gt; +PASS ctx.miterLimit is 1.5
&gt; +PASS ctx.miterLimit is 1.5
&gt; +PASS ctx.miterLimit is 1.5
&gt; +PASS ctx.lineWidth is 1.5
&gt; +PASS ctx.lineWidth is 1.5
&gt; +PASS ctx.lineWidth is 1.5
&gt; +PASS ctx.lineWidth is 1.5
&gt; +PASS ctx.lineWidth is 1.5
&gt; +PASS ctx.lineWidth is 1.5
&gt; +PASS ctx.shadowOffsetX is 1
&gt; +PASS ctx.shadowOffsetY is 2
&gt; +PASS ctx.shadowOffsetX is 1
&gt; +PASS ctx.shadowOffsetY is 2
&gt; +PASS ctx.shadowOffsetX is 1
&gt; +PASS ctx.shadowOffsetY is 2
&gt; +PASS ctx.shadowBlur is 1
&gt; +PASS ctx.shadowBlur is 1
&gt; +PASS ctx.shadowBlur is 1
&gt; +PASS ctx.shadowBlur is 1
&gt; +PASS successfullyParsed is true

This is the old expected file. You need to regenerate this file.

You should upload a new patch, because if we land this one all the bots will fail!

Otherwise, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223643</commentid>
    <comment_count>5</comment_count>
      <attachid>55634</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-05-10 18:24:31 -0700</bug_when>
    <thetext>Created attachment 55634
Proposed patch v3

... duh. Updated patch. Thanks Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225689</commentid>
    <comment_count>6</comment_count>
      <attachid>55634</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-14 00:43:52 -0700</bug_when>
    <thetext>Comment on attachment 55634
Proposed patch v3

Clearing flags on attachment: 55634

Committed r59447: &lt;http://trac.webkit.org/changeset/59447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225690</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-14 00:43:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225708</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2010-05-14 01:28:03 -0700</bug_when>
    <thetext>Revision r59447 cherry-picked into qtwebkit-2.0 with commit 038ed8d8dcdc8a63673b602fca7c0601a7988e2c</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55546</attachid>
            <date>2010-05-10 06:12:54 -0700</date>
            <delta_ts>2010-05-10 11:49:08 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-38841.diff</filename>
            <type>text/plain</type>
            <size>7389</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOTFiNDBmLi5hZTQwNjhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDUt
MTAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byBjaGVjayB0
aGF0IHNldHRpbmcgdmFyaW91cyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgcHJvcGVydGllcwor
ICAgICAgICB0byBpbnZhbGlkIHZhbHVlcyBpcyBpZ25vcmVkLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg0MQorCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
Y2FudmFzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaW52YWxpZC12YWx1ZXMuanM6IEFk
ZGVkLgorCiAyMDEwLTA1LTEwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5ldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2Fu
dmFzLWludmFsaWQtdmFsdWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFz
L2NhbnZhcy1pbnZhbGlkLXZhbHVlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uOTg2MjczNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
MSBAQAorVGVzdCB0aGF0IHNldHRpbmcgdmFyaW91cyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQg
cHJvcGVydGllcyB0byBpbnZhbGlkIHZhbHVlcyBoYXMgbm8gZWZmZWN0LgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjdHgubWl0ZXJMaW1pdCBpcyAxLjUKK1BBU1MgY3R4
Lm1pdGVyTGltaXQgaXMgMS41CitQQVNTIGN0eC5taXRlckxpbWl0IGlzIDEuNQorUEFTUyBjdHgu
bWl0ZXJMaW1pdCBpcyAxLjUKK1BBU1MgY3R4Lm1pdGVyTGltaXQgaXMgMS41CitQQVNTIGN0eC5t
aXRlckxpbWl0IGlzIDEuNQorUEFTUyBjdHgubGluZVdpZHRoIGlzIDEuNQorUEFTUyBjdHgubGlu
ZVdpZHRoIGlzIDEuNQorUEFTUyBjdHgubGluZVdpZHRoIGlzIDEuNQorUEFTUyBjdHgubGluZVdp
ZHRoIGlzIDEuNQorUEFTUyBjdHgubGluZVdpZHRoIGlzIDEuNQorUEFTUyBjdHgubGluZVdpZHRo
IGlzIDEuNQorUEFTUyBjdHguc2hhZG93T2Zmc2V0WCBpcyAxCitQQVNTIGN0eC5zaGFkb3dPZmZz
ZXRZIGlzIDIKK1BBU1MgY3R4LnNoYWRvd09mZnNldFggaXMgMQorUEFTUyBjdHguc2hhZG93T2Zm
c2V0WSBpcyAyCitQQVNTIGN0eC5zaGFkb3dPZmZzZXRYIGlzIDEKK1BBU1MgY3R4LnNoYWRvd09m
ZnNldFkgaXMgMgorUEFTUyBjdHguc2hhZG93Qmx1ciBpcyAxCitQQVNTIGN0eC5zaGFkb3dCbHVy
IGlzIDEKK1BBU1MgY3R4LnNoYWRvd0JsdXIgaXMgMQorUEFTUyBjdHguc2hhZG93Qmx1ciBpcyAx
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW52YWxpZC12YWx1ZXMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTJiZTcxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9jYW52YXMtaW52YWxpZC12YWx1ZXMuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRl
c3RzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3Nj
cmlwdC10ZXN0cy9jYW52YXMtaW52YWxpZC12YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzFhY2IxOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaW52YWxpZC12YWx1ZXMuanMKQEAgLTAsMCAr
MSw4OCBAQAorZGVzY3JpcHRpb24oIlRlc3QgdGhhdCBzZXR0aW5nIHZhcmlvdXMgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEIHByb3BlcnRpZXMgdG8gaW52YWxpZCB2YWx1ZXMgaGFzIG5vIGVmZmVj
dC4iKTsKKwordmFyIGN0eCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLmdldENv
bnRleHQoJzJkJyk7CisKK2N0eC5taXRlckxpbWl0ID0gMS41Oworc2hvdWxkQmUoImN0eC5taXRl
ckxpbWl0IiwgIjEuNSIpOworCitjdHgubWl0ZXJMaW1pdCA9IDEuNTsKK2N0eC5taXRlckxpbWl0
ID0gMDsKK3Nob3VsZEJlKCJjdHgubWl0ZXJMaW1pdCIsICIxLjUiKTsKKworY3R4Lm1pdGVyTGlt
aXQgPSAxLjU7CitjdHgubWl0ZXJMaW1pdCA9IC0xOworc2hvdWxkQmUoImN0eC5taXRlckxpbWl0
IiwgIjEuNSIpOworCitjdHgubWl0ZXJMaW1pdCA9IDEuNTsKK2N0eC5taXRlckxpbWl0ID0gSW5m
aW5pdHk7CitzaG91bGRCZSgiY3R4Lm1pdGVyTGltaXQiLCAiMS41Iik7CisKK2N0eC5taXRlckxp
bWl0ID0gMS41OworY3R4Lm1pdGVyTGltaXQgPSAtSW5maW5pdHk7CitzaG91bGRCZSgiY3R4Lm1p
dGVyTGltaXQiLCAiMS41Iik7CisKK2N0eC5taXRlckxpbWl0ID0gMS41OworY3R4Lm1pdGVyTGlt
aXQgPSBOYU47CitzaG91bGRCZSgiY3R4Lm1pdGVyTGltaXQiLCAiMS41Iik7CisKK2N0eC5saW5l
V2lkdGggPSAxLjU7CitzaG91bGRCZSgiY3R4LmxpbmVXaWR0aCIsICIxLjUiKTsKKworY3R4Lmxp
bmVXaWR0aCA9IDEuNTsKK2N0eC5saW5lV2lkdGggPSAwOworc2hvdWxkQmUoImN0eC5saW5lV2lk
dGgiLCAiMS41Iik7CisKK2N0eC5saW5lV2lkdGggPSAxLjU7CitjdHgubGluZVdpZHRoID0gLTE7
CitzaG91bGRCZSgiY3R4LmxpbmVXaWR0aCIsICIxLjUiKTsKKworY3R4LmxpbmVXaWR0aCA9IDEu
NTsKK2N0eC5saW5lV2lkdGggPSBJbmZpbml0eTsKK3Nob3VsZEJlKCJjdHgubGluZVdpZHRoIiwg
IjEuNSIpOworCitjdHgubGluZVdpZHRoID0gMS41OworY3R4LmxpbmVXaWR0aCA9IC1JbmZpbml0
eTsKK3Nob3VsZEJlKCJjdHgubGluZVdpZHRoIiwgIjEuNSIpOworCitjdHgubGluZVdpZHRoID0g
MS41OworY3R4LmxpbmVXaWR0aCA9IE5hTjsKK3Nob3VsZEJlKCJjdHgubGluZVdpZHRoIiwgIjEu
NSIpOworCitjdHguc2hhZG93T2Zmc2V0WCA9IDE7CitjdHguc2hhZG93T2Zmc2V0WSA9IDI7Citj
dHguc2hhZG93T2Zmc2V0WCA9IEluZmluaXR5OworY3R4LnNoYWRvd09mZnNldFkgPSBJbmZpbml0
eTsKK3Nob3VsZEJlKCJjdHguc2hhZG93T2Zmc2V0WCIsICIxIik7CitzaG91bGRCZSgiY3R4LnNo
YWRvd09mZnNldFkiLCAiMiIpOworCitjdHguc2hhZG93T2Zmc2V0WCA9IDE7CitjdHguc2hhZG93
T2Zmc2V0WSA9IDI7CitjdHguc2hhZG93T2Zmc2V0WCA9IC1JbmZpbml0eTsKK2N0eC5zaGFkb3dP
ZmZzZXRZID0gLUluZmluaXR5Oworc2hvdWxkQmUoImN0eC5zaGFkb3dPZmZzZXRYIiwgIjEiKTsK
K3Nob3VsZEJlKCJjdHguc2hhZG93T2Zmc2V0WSIsICIyIik7CisKK2N0eC5zaGFkb3dPZmZzZXRY
ID0gMTsKK2N0eC5zaGFkb3dPZmZzZXRZID0gMjsKK2N0eC5zaGFkb3dPZmZzZXRYID0gTmFOOwor
Y3R4LnNoYWRvd09mZnNldFkgPSBOYU47CitzaG91bGRCZSgiY3R4LnNoYWRvd09mZnNldFgiLCAi
MSIpOworc2hvdWxkQmUoImN0eC5zaGFkb3dPZmZzZXRZIiwgIjIiKTsKKworY3R4LnNoYWRvd0Js
dXIgPSAxOworY3R4LnNoYWRvd0JsdXIgPSAtMjsKK3Nob3VsZEJlKCJjdHguc2hhZG93Qmx1ciIs
ICIxIik7CisKK2N0eC5zaGFkb3dCbHVyID0gMTsKK2N0eC5zaGFkb3dCbHVyID0gSW5maW5pdHk7
CitzaG91bGRCZSgiY3R4LnNoYWRvd0JsdXIiLCAiMSIpOworCitjdHguc2hhZG93Qmx1ciA9IDE7
CitjdHguc2hhZG93Qmx1ciA9IC1JbmZpbml0eTsKK3Nob3VsZEJlKCJjdHguc2hhZG93Qmx1ciIs
ICIxIik7CisKK2N0eC5zaGFkb3dCbHVyID0gMTsKK2N0eC5zaGFkb3dCbHVyID0gTmFOOworc2hv
dWxkQmUoImN0eC5zaGFkb3dCbHVyIiwgIjEiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDg3M2ZkOTUuLmM0NDIwMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUtMTAgIEFuZHJl
YXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZ25vcmUgaW52YWxpZCB2YWx1ZXMgZm9yIHZh
cmlvdXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHByb3BlcnRpZXMKKyAgICAgICAgKGxpbmVX
aWR0aCwgbWl0ZXJMaW1pdCwgc2hhZG93T2Zmc2V0WCwgc2hhZG93T2Zmc2V0WSBhbmQgc2hhZG93
Qmx1cikKKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Mzg4NDEKKworICAgICAgICBUZXN0OiBmYXN0L2NhbnZhcy9jYW52YXMtaW52YWxpZC12YWx1ZXMu
aHRtbAorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0TGluZVdp
ZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0TWl0
ZXJMaW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNl
dFNoYWRvd09mZnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpzZXRTaGFkb3dPZmZzZXRZKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cik6CisKIDIwMTAtMDUtMTAgIENocmlzIEplcmRvbmVr
ICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKaW5kZXggNjE1YjQ1ZC4uMjU4MjFkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIGZsb2F0IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bGluZVdpZHRoKCkgY29uc3QKIAogdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVXaWR0aChmbG9hdCB3aWR0aCkKIHsKLSAgICBpZiAo
ISh3aWR0aCA+IDApKQorICAgIGlmICghKHdpZHRoID4gMCkgfHwgaXNuYW4od2lkdGgpIHx8IGlz
aW5mKHdpZHRoKSkKICAgICAgICAgcmV0dXJuOwogICAgIHN0YXRlKCkubV9saW5lV2lkdGggPSB3
aWR0aDsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwpAQCAtMjY0
LDcgKzI2NCw3IEBAIGZsb2F0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bWl0ZXJMaW1pdCgp
IGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRNaXRlckxpbWl0KGZs
b2F0IGxpbWl0KQogewotICAgIGlmICghKGxpbWl0ID4gMCkpCisgICAgaWYgKCEobGltaXQgPiAw
KSB8fCBpc25hbihsaW1pdCkgfHwgaXNpbmYobGltaXQpKQogICAgICAgICByZXR1cm47CiAgICAg
c3RhdGUoKS5tX21pdGVyTGltaXQgPSBsaW1pdDsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBk
cmF3aW5nQ29udGV4dCgpOwpAQCAtMjgwLDYgKzI4MCw4IEBAIGZsb2F0IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2hhZG93T2Zmc2V0WCgpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3dPZmZzZXRYKGZsb2F0IHgpCiB7CisgICAgaWYgKGlzbmFuKHgp
IHx8IGlzaW5mKHgpKQorICAgICAgICByZXR1cm47CiAgICAgc3RhdGUoKS5tX3NoYWRvd09mZnNl
dC5zZXRXaWR0aCh4KTsKICAgICBhcHBseVNoYWRvdygpOwogfQpAQCAtMjkxLDYgKzI5Myw4IEBA
IGZsb2F0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93T2Zmc2V0WSgpIGNvbnN0CiAK
IHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dPZmZzZXRZKGZsb2F0IHkp
CiB7CisgICAgaWYgKGlzbmFuKHkpIHx8IGlzaW5mKHkpKQorICAgICAgICByZXR1cm47CiAgICAg
c3RhdGUoKS5tX3NoYWRvd09mZnNldC5zZXRIZWlnaHQoeSk7CiAgICAgYXBwbHlTaGFkb3coKTsK
IH0KQEAgLTMwMiw2ICszMDYsOCBAQCBmbG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNo
YWRvd0JsdXIoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hh
ZG93Qmx1cihmbG9hdCBibHVyKQogeworICAgIGlmICghKGJsdXIgPj0gMCkgfHwgaXNuYW4oYmx1
cikgfHwgaXNpbmYoYmx1cikpCisgICAgICAgIHJldHVybjsKICAgICBzdGF0ZSgpLm1fc2hhZG93
Qmx1ciA9IGJsdXI7CiAgICAgYXBwbHlTaGFkb3coKTsKIH0K
</data>
<flag name="review"
          id="39757"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55582</attachid>
            <date>2010-05-10 11:49:08 -0700</date>
            <delta_ts>2010-05-10 18:24:31 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-38841-2.diff</filename>
            <type>text/plain</type>
            <size>8531</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOTFiNDBmLi42NDg0OWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUt
MTAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byBjaGVjayB0
aGF0IHNldHRpbmcgdmFyaW91cyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgcHJvcGVydGllcwor
ICAgICAgICB0byBpbnZhbGlkIHZhbHVlcyBpcyBpZ25vcmVkLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg0MQorCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jYW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaW52YWxpZC12YWx1ZXMuanM6IEFk
ZGVkLgorICAgICAgICAodHJ5U2V0dGluZ01pdGVyTGltaXQpOgorICAgICAgICAodHJ5U2V0dGlu
Z0xpbmVXaWR0aCk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93Qmx1cik6CisgICAgICAgICh0
cnlTZXR0aW5nU2hhZG93T2Zmc2V0WCk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93T2Zmc2V0
WSk6CisKIDIwMTAtMDUtMTAgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtaW52YWxpZC12YWx1ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWludmFsaWQtdmFsdWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi45ODYyNzM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMx
IEBACitUZXN0IHRoYXQgc2V0dGluZyB2YXJpb3VzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBw
cm9wZXJ0aWVzIHRvIGludmFsaWQgdmFsdWVzIGhhcyBubyBlZmZlY3QuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGN0eC5taXRlckxpbWl0IGlzIDEuNQorUEFTUyBjdHgu
bWl0ZXJMaW1pdCBpcyAxLjUKK1BBU1MgY3R4Lm1pdGVyTGltaXQgaXMgMS41CitQQVNTIGN0eC5t
aXRlckxpbWl0IGlzIDEuNQorUEFTUyBjdHgubWl0ZXJMaW1pdCBpcyAxLjUKK1BBU1MgY3R4Lm1p
dGVyTGltaXQgaXMgMS41CitQQVNTIGN0eC5saW5lV2lkdGggaXMgMS41CitQQVNTIGN0eC5saW5l
V2lkdGggaXMgMS41CitQQVNTIGN0eC5saW5lV2lkdGggaXMgMS41CitQQVNTIGN0eC5saW5lV2lk
dGggaXMgMS41CitQQVNTIGN0eC5saW5lV2lkdGggaXMgMS41CitQQVNTIGN0eC5saW5lV2lkdGgg
aXMgMS41CitQQVNTIGN0eC5zaGFkb3dPZmZzZXRYIGlzIDEKK1BBU1MgY3R4LnNoYWRvd09mZnNl
dFkgaXMgMgorUEFTUyBjdHguc2hhZG93T2Zmc2V0WCBpcyAxCitQQVNTIGN0eC5zaGFkb3dPZmZz
ZXRZIGlzIDIKK1BBU1MgY3R4LnNoYWRvd09mZnNldFggaXMgMQorUEFTUyBjdHguc2hhZG93T2Zm
c2V0WSBpcyAyCitQQVNTIGN0eC5zaGFkb3dCbHVyIGlzIDEKK1BBU1MgY3R4LnNoYWRvd0JsdXIg
aXMgMQorUEFTUyBjdHguc2hhZG93Qmx1ciBpcyAxCitQQVNTIGN0eC5zaGFkb3dCbHVyIGlzIDEK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW52YWxpZC12YWx1ZXMuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMmJlNzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52YXMtaW52YWxpZC12YWx1ZXMuaHRtbApA
QCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9zY3JpcHQtdGVz
dHMvY2FudmFzLWludmFsaWQtdmFsdWVzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvc2Ny
aXB0LXRlc3RzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5jYzUwNjliCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy5qcwpAQCAtMCwwICsx
LDg1IEBACitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IHNldHRpbmcgdmFyaW91cyBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQgcHJvcGVydGllcyB0byBpbnZhbGlkIHZhbHVlcyBoYXMgbm8gZWZmZWN0
LiIpOworCitjdHggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKS5nZXRDb250ZXh0
KCcyZCcpOworCitmdW5jdGlvbiB0cnlTZXR0aW5nTWl0ZXJMaW1pdCh2YWx1ZSkgeworICAgIGN0
eC5taXRlckxpbWl0ID0gMS41OworICAgIGN0eC5taXRlckxpbWl0ID0gdmFsdWU7CisgICAgcmV0
dXJuIGN0eC5taXRlckxpbWl0OworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nTGluZVdpZHRoKHZh
bHVlKSB7CisgICAgY3R4LmxpbmVXaWR0aCA9IDEuNTsKKyAgICBjdHgubGluZVdpZHRoID0gdmFs
dWU7CisgICAgcmV0dXJuIGN0eC5saW5lV2lkdGg7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdT
aGFkb3dCbHVyKHZhbHVlKSB7CisgICAgY3R4LnNoYWRvd0JsdXIgPSAxLjU7CisgICAgY3R4LnNo
YWRvd0JsdXIgPSB2YWx1ZTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd0JsdXI7Cit9CisKK2Z1bmN0
aW9uIHRyeVNldHRpbmdTaGFkb3dPZmZzZXRYKHZhbHVlKSB7CisgICAgY3R4LnNoYWRvd09mZnNl
dFggPSAxLjU7CisgICAgY3R4LnNoYWRvd09mZnNldFggPSB2YWx1ZTsKKyAgICByZXR1cm4gY3R4
LnNoYWRvd09mZnNldFg7Cit9CisKK2Z1bmN0aW9uIHRyeVNldHRpbmdTaGFkb3dPZmZzZXRZKHZh
bHVlKSB7CisgICAgY3R4LnNoYWRvd09mZnNldFkgPSAxLjU7CisgICAgY3R4LnNoYWRvd09mZnNl
dFkgPSB2YWx1ZTsKKyAgICByZXR1cm4gY3R4LnNoYWRvd09mZnNldFk7Cit9CisKK3Nob3VsZEJl
KCJ0cnlTZXR0aW5nTWl0ZXJMaW1pdCgxKSIsICIxIik7CitzaG91bGRCZSgidHJ5U2V0dGluZ01p
dGVyTGltaXQoMCkiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ01pdGVyTGltaXQoLTEp
IiwgIjEuNSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdNaXRlckxpbWl0KEluZmluaXR5KSIsICIx
LjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTWl0ZXJMaW1pdCgtSW5maW5pdHkpIiwgIjEuNSIp
Oworc2hvdWxkQmUoInRyeVNldHRpbmdNaXRlckxpbWl0KE5hTikiLCAiMS41Iik7CitzaG91bGRC
ZSgidHJ5U2V0dGluZ01pdGVyTGltaXQoJ3N0cmluZycpIiwgIjEuNSIpOworc2hvdWxkQmUoInRy
eVNldHRpbmdNaXRlckxpbWl0KHRydWUpIiwgIjEiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTWl0
ZXJMaW1pdChmYWxzZSkiLCAiMS41Iik7CisKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTGluZVdpZHRo
KDEpIiwgIjEiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTGluZVdpZHRoKDApIiwgIjEuNSIpOwor
c2hvdWxkQmUoInRyeVNldHRpbmdMaW5lV2lkdGgoLTEpIiwgIjEuNSIpOworc2hvdWxkQmUoInRy
eVNldHRpbmdMaW5lV2lkdGgoSW5maW5pdHkpIiwgIjEuNSIpOworc2hvdWxkQmUoInRyeVNldHRp
bmdMaW5lV2lkdGgoLUluZmluaXR5KSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTGlu
ZVdpZHRoKE5hTikiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ0xpbmVXaWR0aCgnc3Ry
aW5nJykiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ0xpbmVXaWR0aCh0cnVlKSIsICIx
Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ0xpbmVXaWR0aChmYWxzZSkiLCAiMS41Iik7CisKK3No
b3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93Qmx1cigxKSIsICIxIik7CitzaG91bGRCZSgidHJ5U2V0
dGluZ1NoYWRvd0JsdXIoMCkiLCAiMCIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dCbHVy
KC0xKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93Qmx1cihJbmZpbml0eSki
LCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd0JsdXIoLUluZmluaXR5KSIsICIx
LjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93Qmx1cihOYU4pIiwgIjEuNSIpOworc2hv
dWxkQmUoInRyeVNldHRpbmdTaGFkb3dCbHVyKCdzdHJpbmcnKSIsICIxLjUiKTsKK3Nob3VsZEJl
KCJ0cnlTZXR0aW5nU2hhZG93Qmx1cih0cnVlKSIsICIxIik7CitzaG91bGRCZSgidHJ5U2V0dGlu
Z1NoYWRvd0JsdXIoZmFsc2UpIiwgIjAiKTsKKworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dP
ZmZzZXRYKDEpIiwgIjEiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WCgwKSIs
ICIwIik7CitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFgoLTEpIiwgIi0xIik7Citz
aG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFgoSW5maW5pdHkpIiwgIjEuNSIpOworc2hv
dWxkQmUoInRyeVNldHRpbmdTaGFkb3dPZmZzZXRYKC1JbmZpbml0eSkiLCAiMS41Iik7CitzaG91
bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFgoTmFOKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0
cnlTZXR0aW5nU2hhZG93T2Zmc2V0WCgnc3RyaW5nJykiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5
U2V0dGluZ1NoYWRvd09mZnNldFgodHJ1ZSkiLCAiMSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdT
aGFkb3dPZmZzZXRYKGZhbHNlKSIsICIwIik7CisKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93
T2Zmc2V0WSgxKSIsICIxIik7CitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFkoMCki
LCAiMCIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dPZmZzZXRZKC0xKSIsICItMSIpOwor
c2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dPZmZzZXRZKEluZmluaXR5KSIsICIxLjUiKTsKK3No
b3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WSgtSW5maW5pdHkpIiwgIjEuNSIpOworc2hv
dWxkQmUoInRyeVNldHRpbmdTaGFkb3dPZmZzZXRZKE5hTikiLCAiMS41Iik7CitzaG91bGRCZSgi
dHJ5U2V0dGluZ1NoYWRvd09mZnNldFkoJ3N0cmluZycpIiwgIjEuNSIpOworc2hvdWxkQmUoInRy
eVNldHRpbmdTaGFkb3dPZmZzZXRZKHRydWUpIiwgIjEiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5n
U2hhZG93T2Zmc2V0WShmYWxzZSkiLCAiMCIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggODczZmQ5NS4uYzQ0MjAzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNS0xMCAgQW5kcmVh
cyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElnbm9yZSBpbnZhbGlkIHZhbHVlcyBmb3IgdmFy
aW91cyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgcHJvcGVydGllcworICAgICAgICAobGluZVdp
ZHRoLCBtaXRlckxpbWl0LCBzaGFkb3dPZmZzZXRYLCBzaGFkb3dPZmZzZXRZIGFuZCBzaGFkb3dC
bHVyKQorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
ODg0MQorCisgICAgICAgIFRlc3Q6IGZhc3QvY2FudmFzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy5o
dG1sCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRMaW5lV2lk
dGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRNaXRl
ckxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93T2Zmc2V0WCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQ6OnNldFNoYWRvd09mZnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3dCbHVyKToKKwogMjAxMC0wNS0xMCAgQ2hyaXMgSmVyZG9uZWsg
IDxjamVyZG9uZWtAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcCBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cAppbmRleCA2MTViNDVkLi40Yjg5MTI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgZmxvYXQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpsaW5lV2lkdGgoKSBjb25zdAogCiB2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0TGluZVdpZHRoKGZsb2F0IHdpZHRoKQogewotICAgIGlmICgh
KHdpZHRoID4gMCkpCisgICAgaWYgKCEoaXNmaW5pdGUod2lkdGgpICYmIHdpZHRoID4gMCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBzdGF0ZSgpLm1fbGluZVdpZHRoID0gd2lkdGg7CiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0NvbnRleHQoKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBm
bG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1pdGVyTGltaXQoKSBjb25zdAogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0TWl0ZXJMaW1pdChmbG9hdCBsaW1pdCkKIHsK
LSAgICBpZiAoIShsaW1pdCA+IDApKQorICAgIGlmICghKGlzZmluaXRlKGxpbWl0KSAmJiBsaW1p
dCA+IDApKQogICAgICAgICByZXR1cm47CiAgICAgc3RhdGUoKS5tX21pdGVyTGltaXQgPSBsaW1p
dDsKICAgICBHcmFwaGljc0NvbnRleHQqIGMgPSBkcmF3aW5nQ29udGV4dCgpOwpAQCAtMjgwLDYg
KzI4MCw4IEBAIGZsb2F0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hhZG93T2Zmc2V0WCgp
IGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dPZmZzZXRY
KGZsb2F0IHgpCiB7CisgICAgaWYgKCFpc2Zpbml0ZSh4KSkKKyAgICAgICAgcmV0dXJuOwogICAg
IHN0YXRlKCkubV9zaGFkb3dPZmZzZXQuc2V0V2lkdGgoeCk7CiAgICAgYXBwbHlTaGFkb3coKTsK
IH0KQEAgLTI5MSw2ICsyOTMsOCBAQCBmbG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNo
YWRvd09mZnNldFkoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0
U2hhZG93T2Zmc2V0WShmbG9hdCB5KQogeworICAgIGlmICghaXNmaW5pdGUoeSkpCisgICAgICAg
IHJldHVybjsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LnNldEhlaWdodCh5KTsKICAgICBh
cHBseVNoYWRvdygpOwogfQpAQCAtMzAyLDYgKzMwNiw4IEBAIGZsb2F0IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6c2hhZG93Qmx1cigpIGNvbnN0CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjpzZXRTaGFkb3dCbHVyKGZsb2F0IGJsdXIpCiB7CisgICAgaWYgKCEoaXNmaW5pdGUo
Ymx1cikgJiYgYmx1ciA+PSAwKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHN0YXRlKCkubV9zaGFk
b3dCbHVyID0gYmx1cjsKICAgICBhcHBseVNoYWRvdygpOwogfQo=
</data>
<flag name="review"
          id="39807"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="39808"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55634</attachid>
            <date>2010-05-10 18:24:31 -0700</date>
            <delta_ts>2010-05-14 00:43:52 -0700</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-38841-3.diff</filename>
            <type>text/plain</type>
            <size>9759</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkOTFiNDBmLi42NDg0OWVmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDUt
MTAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5va2lhLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCB0byBjaGVjayB0
aGF0IHNldHRpbmcgdmFyaW91cyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgcHJvcGVydGllcwor
ICAgICAgICB0byBpbnZhbGlkIHZhbHVlcyBpcyBpZ25vcmVkLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg0MQorCisgICAgICAgICogZmFzdC9j
YW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jYW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaW52YWxpZC12YWx1ZXMuanM6IEFk
ZGVkLgorICAgICAgICAodHJ5U2V0dGluZ01pdGVyTGltaXQpOgorICAgICAgICAodHJ5U2V0dGlu
Z0xpbmVXaWR0aCk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93Qmx1cik6CisgICAgICAgICh0
cnlTZXR0aW5nU2hhZG93T2Zmc2V0WCk6CisgICAgICAgICh0cnlTZXR0aW5nU2hhZG93T2Zmc2V0
WSk6CisKIDIwMTAtMDUtMTAgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy9jYW52
YXMtaW52YWxpZC12YWx1ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMv
Y2FudmFzLWludmFsaWQtdmFsdWVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi44MWIyNmFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jYW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU0
IEBACitUZXN0IHRoYXQgc2V0dGluZyB2YXJpb3VzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCBw
cm9wZXJ0aWVzIHRvIGludmFsaWQgdmFsdWVzIGhhcyBubyBlZmZlY3QuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRyeVNldHRpbmdNaXRlckxpbWl0KDEpIGlzIDEKK1BB
U1MgdHJ5U2V0dGluZ01pdGVyTGltaXQoMCkgaXMgMS41CitQQVNTIHRyeVNldHRpbmdNaXRlckxp
bWl0KC0xKSBpcyAxLjUKK1BBU1MgdHJ5U2V0dGluZ01pdGVyTGltaXQoSW5maW5pdHkpIGlzIDEu
NQorUEFTUyB0cnlTZXR0aW5nTWl0ZXJMaW1pdCgtSW5maW5pdHkpIGlzIDEuNQorUEFTUyB0cnlT
ZXR0aW5nTWl0ZXJMaW1pdChOYU4pIGlzIDEuNQorUEFTUyB0cnlTZXR0aW5nTWl0ZXJMaW1pdCgn
c3RyaW5nJykgaXMgMS41CitQQVNTIHRyeVNldHRpbmdNaXRlckxpbWl0KHRydWUpIGlzIDEKK1BB
U1MgdHJ5U2V0dGluZ01pdGVyTGltaXQoZmFsc2UpIGlzIDEuNQorUEFTUyB0cnlTZXR0aW5nTGlu
ZVdpZHRoKDEpIGlzIDEKK1BBU1MgdHJ5U2V0dGluZ0xpbmVXaWR0aCgwKSBpcyAxLjUKK1BBU1Mg
dHJ5U2V0dGluZ0xpbmVXaWR0aCgtMSkgaXMgMS41CitQQVNTIHRyeVNldHRpbmdMaW5lV2lkdGgo
SW5maW5pdHkpIGlzIDEuNQorUEFTUyB0cnlTZXR0aW5nTGluZVdpZHRoKC1JbmZpbml0eSkgaXMg
MS41CitQQVNTIHRyeVNldHRpbmdMaW5lV2lkdGgoTmFOKSBpcyAxLjUKK1BBU1MgdHJ5U2V0dGlu
Z0xpbmVXaWR0aCgnc3RyaW5nJykgaXMgMS41CitQQVNTIHRyeVNldHRpbmdMaW5lV2lkdGgodHJ1
ZSkgaXMgMQorUEFTUyB0cnlTZXR0aW5nTGluZVdpZHRoKGZhbHNlKSBpcyAxLjUKK1BBU1MgdHJ5
U2V0dGluZ1NoYWRvd0JsdXIoMSkgaXMgMQorUEFTUyB0cnlTZXR0aW5nU2hhZG93Qmx1cigwKSBp
cyAwCitQQVNTIHRyeVNldHRpbmdTaGFkb3dCbHVyKC0xKSBpcyAxLjUKK1BBU1MgdHJ5U2V0dGlu
Z1NoYWRvd0JsdXIoSW5maW5pdHkpIGlzIDEuNQorUEFTUyB0cnlTZXR0aW5nU2hhZG93Qmx1cigt
SW5maW5pdHkpIGlzIDEuNQorUEFTUyB0cnlTZXR0aW5nU2hhZG93Qmx1cihOYU4pIGlzIDEuNQor
UEFTUyB0cnlTZXR0aW5nU2hhZG93Qmx1cignc3RyaW5nJykgaXMgMS41CitQQVNTIHRyeVNldHRp
bmdTaGFkb3dCbHVyKHRydWUpIGlzIDEKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd0JsdXIoZmFsc2Up
IGlzIDAKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd09mZnNldFgoMSkgaXMgMQorUEFTUyB0cnlTZXR0
aW5nU2hhZG93T2Zmc2V0WCgwKSBpcyAwCitQQVNTIHRyeVNldHRpbmdTaGFkb3dPZmZzZXRYKC0x
KSBpcyAtMQorUEFTUyB0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WChJbmZpbml0eSkgaXMgMS41CitQ
QVNTIHRyeVNldHRpbmdTaGFkb3dPZmZzZXRYKC1JbmZpbml0eSkgaXMgMS41CitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dPZmZzZXRYKE5hTikgaXMgMS41CitQQVNTIHRyeVNldHRpbmdTaGFkb3dPZmZz
ZXRYKCdzdHJpbmcnKSBpcyAxLjUKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd09mZnNldFgodHJ1ZSkg
aXMgMQorUEFTUyB0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WChmYWxzZSkgaXMgMAorUEFTUyB0cnlT
ZXR0aW5nU2hhZG93T2Zmc2V0WSgxKSBpcyAxCitQQVNTIHRyeVNldHRpbmdTaGFkb3dPZmZzZXRZ
KDApIGlzIDAKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd09mZnNldFkoLTEpIGlzIC0xCitQQVNTIHRy
eVNldHRpbmdTaGFkb3dPZmZzZXRZKEluZmluaXR5KSBpcyAxLjUKK1BBU1MgdHJ5U2V0dGluZ1No
YWRvd09mZnNldFkoLUluZmluaXR5KSBpcyAxLjUKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd09mZnNl
dFkoTmFOKSBpcyAxLjUKK1BBU1MgdHJ5U2V0dGluZ1NoYWRvd09mZnNldFkoJ3N0cmluZycpIGlz
IDEuNQorUEFTUyB0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WSh0cnVlKSBpcyAxCitQQVNTIHRyeVNl
dHRpbmdTaGFkb3dPZmZzZXRZKGZhbHNlKSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
YW52YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZh
cy9jYW52YXMtaW52YWxpZC12YWx1ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ZTJiZTcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52
YXMvY2FudmFzLWludmFsaWQtdmFsdWVzLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9jYW52YXMtaW52YWxp
ZC12YWx1ZXMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvc2NyaXB0LXRlc3RzL2NhbnZhcy1pbnZhbGlkLXZhbHVlcy5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52YXMtaW52YWxpZC12
YWx1ZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1MDY5YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3NjcmlwdC10ZXN0cy9jYW52
YXMtaW52YWxpZC12YWx1ZXMuanMKQEAgLTAsMCArMSw4NSBAQAorZGVzY3JpcHRpb24oIlRlc3Qg
dGhhdCBzZXR0aW5nIHZhcmlvdXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHByb3BlcnRpZXMg
dG8gaW52YWxpZCB2YWx1ZXMgaGFzIG5vIGVmZmVjdC4iKTsKKworY3R4ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKTsKKworZnVuY3Rpb24gdHJ5U2V0
dGluZ01pdGVyTGltaXQodmFsdWUpIHsKKyAgICBjdHgubWl0ZXJMaW1pdCA9IDEuNTsKKyAgICBj
dHgubWl0ZXJMaW1pdCA9IHZhbHVlOworICAgIHJldHVybiBjdHgubWl0ZXJMaW1pdDsKK30KKwor
ZnVuY3Rpb24gdHJ5U2V0dGluZ0xpbmVXaWR0aCh2YWx1ZSkgeworICAgIGN0eC5saW5lV2lkdGgg
PSAxLjU7CisgICAgY3R4LmxpbmVXaWR0aCA9IHZhbHVlOworICAgIHJldHVybiBjdHgubGluZVdp
ZHRoOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93Qmx1cih2YWx1ZSkgeworICAgIGN0
eC5zaGFkb3dCbHVyID0gMS41OworICAgIGN0eC5zaGFkb3dCbHVyID0gdmFsdWU7CisgICAgcmV0
dXJuIGN0eC5zaGFkb3dCbHVyOworfQorCitmdW5jdGlvbiB0cnlTZXR0aW5nU2hhZG93T2Zmc2V0
WCh2YWx1ZSkgeworICAgIGN0eC5zaGFkb3dPZmZzZXRYID0gMS41OworICAgIGN0eC5zaGFkb3dP
ZmZzZXRYID0gdmFsdWU7CisgICAgcmV0dXJuIGN0eC5zaGFkb3dPZmZzZXRYOworfQorCitmdW5j
dGlvbiB0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WSh2YWx1ZSkgeworICAgIGN0eC5zaGFkb3dPZmZz
ZXRZID0gMS41OworICAgIGN0eC5zaGFkb3dPZmZzZXRZID0gdmFsdWU7CisgICAgcmV0dXJuIGN0
eC5zaGFkb3dPZmZzZXRZOworfQorCitzaG91bGRCZSgidHJ5U2V0dGluZ01pdGVyTGltaXQoMSki
LCAiMSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdNaXRlckxpbWl0KDApIiwgIjEuNSIpOworc2hv
dWxkQmUoInRyeVNldHRpbmdNaXRlckxpbWl0KC0xKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlT
ZXR0aW5nTWl0ZXJMaW1pdChJbmZpbml0eSkiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGlu
Z01pdGVyTGltaXQoLUluZmluaXR5KSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTWl0
ZXJMaW1pdChOYU4pIiwgIjEuNSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdNaXRlckxpbWl0KCdz
dHJpbmcnKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTWl0ZXJMaW1pdCh0cnVlKSIs
ICIxIik7CitzaG91bGRCZSgidHJ5U2V0dGluZ01pdGVyTGltaXQoZmFsc2UpIiwgIjEuNSIpOwor
CitzaG91bGRCZSgidHJ5U2V0dGluZ0xpbmVXaWR0aCgxKSIsICIxIik7CitzaG91bGRCZSgidHJ5
U2V0dGluZ0xpbmVXaWR0aCgwKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTGluZVdp
ZHRoKC0xKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTGluZVdpZHRoKEluZmluaXR5
KSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nTGluZVdpZHRoKC1JbmZpbml0eSkiLCAi
MS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ0xpbmVXaWR0aChOYU4pIiwgIjEuNSIpOworc2hv
dWxkQmUoInRyeVNldHRpbmdMaW5lV2lkdGgoJ3N0cmluZycpIiwgIjEuNSIpOworc2hvdWxkQmUo
InRyeVNldHRpbmdMaW5lV2lkdGgodHJ1ZSkiLCAiMSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdM
aW5lV2lkdGgoZmFsc2UpIiwgIjEuNSIpOworCitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd0Js
dXIoMSkiLCAiMSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dCbHVyKDApIiwgIjAiKTsK
K3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93Qmx1cigtMSkiLCAiMS41Iik7CitzaG91bGRCZSgi
dHJ5U2V0dGluZ1NoYWRvd0JsdXIoSW5maW5pdHkpIiwgIjEuNSIpOworc2hvdWxkQmUoInRyeVNl
dHRpbmdTaGFkb3dCbHVyKC1JbmZpbml0eSkiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGlu
Z1NoYWRvd0JsdXIoTmFOKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93Qmx1
cignc3RyaW5nJykiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd0JsdXIodHJ1
ZSkiLCAiMSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dCbHVyKGZhbHNlKSIsICIwIik7
CisKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WCgxKSIsICIxIik7CitzaG91bGRC
ZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFgoMCkiLCAiMCIpOworc2hvdWxkQmUoInRyeVNldHRp
bmdTaGFkb3dPZmZzZXRYKC0xKSIsICItMSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dP
ZmZzZXRYKEluZmluaXR5KSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93T2Zm
c2V0WCgtSW5maW5pdHkpIiwgIjEuNSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dPZmZz
ZXRYKE5hTikiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFgoJ3N0
cmluZycpIiwgIjEuNSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dPZmZzZXRYKHRydWUp
IiwgIjEiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WChmYWxzZSkiLCAiMCIp
OworCitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFkoMSkiLCAiMSIpOworc2hvdWxk
QmUoInRyeVNldHRpbmdTaGFkb3dPZmZzZXRZKDApIiwgIjAiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0
aW5nU2hhZG93T2Zmc2V0WSgtMSkiLCAiLTEiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93
T2Zmc2V0WShJbmZpbml0eSkiLCAiMS41Iik7CitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09m
ZnNldFkoLUluZmluaXR5KSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93T2Zm
c2V0WShOYU4pIiwgIjEuNSIpOworc2hvdWxkQmUoInRyeVNldHRpbmdTaGFkb3dPZmZzZXRZKCdz
dHJpbmcnKSIsICIxLjUiKTsKK3Nob3VsZEJlKCJ0cnlTZXR0aW5nU2hhZG93T2Zmc2V0WSh0cnVl
KSIsICIxIik7CitzaG91bGRCZSgidHJ5U2V0dGluZ1NoYWRvd09mZnNldFkoZmFsc2UpIiwgIjAi
KTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg3M2ZkOTUuLmM0NDIwMzYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjEgQEAKKzIwMTAtMDUtMTAgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmtsaW5nQG5v
a2lhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJZ25vcmUgaW52YWxpZCB2YWx1ZXMgZm9yIHZhcmlvdXMgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEIHByb3BlcnRpZXMKKyAgICAgICAgKGxpbmVXaWR0aCwgbWl0ZXJMaW1pdCwgc2hhZG93T2Zm
c2V0WCwgc2hhZG93T2Zmc2V0WSBhbmQgc2hhZG93Qmx1cikKKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDEKKworICAgICAgICBUZXN0OiBmYXN0
L2NhbnZhcy9jYW52YXMtaW52YWxpZC12YWx1ZXMuaHRtbAorCisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0TGluZVdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0TWl0ZXJMaW1pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd09mZnNldFgpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3dPZmZzZXRZKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cik6
CisKIDIwMTAtMDUtMTAgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggNjE1YjQ1ZC4uNGI4OTEyOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNw
cApAQCAtMjE0LDcgKzIxNCw3IEBAIGZsb2F0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bGlu
ZVdpZHRoKCkgY29uc3QKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldExpbmVX
aWR0aChmbG9hdCB3aWR0aCkKIHsKLSAgICBpZiAoISh3aWR0aCA+IDApKQorICAgIGlmICghKGlz
ZmluaXRlKHdpZHRoKSAmJiB3aWR0aCA+IDApKQogICAgICAgICByZXR1cm47CiAgICAgc3RhdGUo
KS5tX2xpbmVXaWR0aCA9IHdpZHRoOwogICAgIEdyYXBoaWNzQ29udGV4dCogYyA9IGRyYXdpbmdD
b250ZXh0KCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgZmxvYXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjptaXRlckxpbWl0KCkgY29uc3QKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6
OnNldE1pdGVyTGltaXQoZmxvYXQgbGltaXQpCiB7Ci0gICAgaWYgKCEobGltaXQgPiAwKSkKKyAg
ICBpZiAoIShpc2Zpbml0ZShsaW1pdCkgJiYgbGltaXQgPiAwKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIHN0YXRlKCkubV9taXRlckxpbWl0ID0gbGltaXQ7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBj
ID0gZHJhd2luZ0NvbnRleHQoKTsKQEAgLTI4MCw2ICsyODAsOCBAQCBmbG9hdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNoYWRvd09mZnNldFgoKSBjb25zdAogCiB2b2lkIENhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRDo6c2V0U2hhZG93T2Zmc2V0WChmbG9hdCB4KQogeworICAgIGlmICghaXNm
aW5pdGUoeCkpCisgICAgICAgIHJldHVybjsKICAgICBzdGF0ZSgpLm1fc2hhZG93T2Zmc2V0LnNl
dFdpZHRoKHgpOwogICAgIGFwcGx5U2hhZG93KCk7CiB9CkBAIC0yOTEsNiArMjkzLDggQEAgZmxv
YXQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaGFkb3dPZmZzZXRZKCkgY29uc3QKIAogdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvd09mZnNldFkoZmxvYXQgeSkKIHsK
KyAgICBpZiAoIWlzZmluaXRlKHkpKQorICAgICAgICByZXR1cm47CiAgICAgc3RhdGUoKS5tX3No
YWRvd09mZnNldC5zZXRIZWlnaHQoeSk7CiAgICAgYXBwbHlTaGFkb3coKTsKIH0KQEAgLTMwMiw2
ICszMDYsOCBAQCBmbG9hdCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNoYWRvd0JsdXIoKSBj
b25zdAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93Qmx1cihmbG9h
dCBibHVyKQogeworICAgIGlmICghKGlzZmluaXRlKGJsdXIpICYmIGJsdXIgPj0gMCkpCisgICAg
ICAgIHJldHVybjsKICAgICBzdGF0ZSgpLm1fc2hhZG93Qmx1ciA9IGJsdXI7CiAgICAgYXBwbHlT
aGFkb3coKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>