<?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>46051</bug_id>
          
          <creation_ts>2010-09-19 09:05:45 -0700</creation_ts>
          <short_desc>SVG: Make RenderPath DRT output platform-independent</short_desc>
          <delta_ts>2010-10-08 02:50:24 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>47053</dependson>
          <blocked>46052</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>krit</cc>
    
    <cc>ossy</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>281274</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-19 09:05:45 -0700</bug_when>
    <thetext>DRT currently uses the port-specific Path::debugString() to dump RenderPath objects.

We should switch to using a platform-independent output format for paths, and also simplify the format used for primitives (rect, circle, ellipse, line and polygon.)

See also: https://lists.webkit.org/pipermail/webkit-dev/2010-September/014419.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281275</commentid>
    <comment_count>1</comment_count>
      <attachid>68026</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-19 09:21:50 -0700</bug_when>
    <thetext>Created attachment 68026
Proposed patch, first stab

A first modest attempt at this - not gonna bother rebaselining tests just yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281276</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-19 09:22:41 -0700</bug_when>
    <thetext>Attachment 68026 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/SVGRenderTreeAsText.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281279</commentid>
    <comment_count>3</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-09-19 09:30:43 -0700</bug_when>
    <thetext>See also bug 33784.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281483</commentid>
    <comment_count>4</comment_count>
      <attachid>68026</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-20 04:02:52 -0700</bug_when>
    <thetext>Comment on attachment 68026
Proposed patch, first stab

Looks good to me!
I&apos;d propose to not add those virtual methods (isRectElement) etc, just for the sake of DRT.
Just compare the tag names: if (svgElement-&gt;hasTagName(SVGNames::rectTag)) { ...}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281509</commentid>
    <comment_count>5</comment_count>
      <attachid>68073</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-20 06:11:53 -0700</bug_when>
    <thetext>Created attachment 68073
Proposed patch v2

Using tag names instead of adding virtuals, as per Niko&apos;s request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281559</commentid>
    <comment_count>6</comment_count>
      <attachid>68073</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-20 08:19:55 -0700</bug_when>
    <thetext>Comment on attachment 68073
Proposed patch v2

Looks great Andreas! Can you please upload a seperated patch including all rebaselines first?
You also have to take special care of all platform specific results, not living in platform/mac.
I&apos;ll r+ it afterwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281565</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-20 08:24:23 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 68073 [details])
&gt; Looks great Andreas! Can you please upload a seperated patch including all rebaselines first?
&gt; You also have to take special care of all platform specific results, not living in platform/mac.
&gt; I&apos;ll r+ it afterwards.

I only have access to the Qt platform right now, so I can do those - would it be acceptable to use &quot;webkit-patch rebaseline&quot; to complete with results from bots after landing? (I will upload a patch with Qt rebaselines first.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>281572</commentid>
    <comment_count>8</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-09-20 08:41:51 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 68073 [details] [details])
&gt; &gt; Looks great Andreas! Can you please upload a seperated patch including all rebaselines first?
&gt; &gt; You also have to take special care of all platform specific results, not living in platform/mac.
&gt; &gt; I&apos;ll r+ it afterwards.
&gt; 
&gt; I only have access to the Qt platform right now, so I can do those - would it be acceptable to use &quot;webkit-patch rebaseline&quot; to complete with results from bots after landing? (I will upload a patch with Qt rebaselines first.)

Hmm, that&apos;s a problem, as IIRC the bots exit after 20 failures, so it would require many iterations to fix all Mac bots.
Can someone generate the mac results for you, my tree is hosed atm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283593</commentid>
    <comment_count>9</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-23 06:24:25 -0700</bug_when>
    <thetext>I&apos;ve asked Ossy to help with Qt results and Tor Arne with Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283686</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-23 09:19:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Hmm, that&apos;s a problem, as IIRC the bots exit after 20 failures, so it would require many iterations to fix all Mac bots.

No, fortunately bots use &quot;--exit-after-n-crashes-or-timeouts 20&quot;
option instead of previous &quot;--exit-after-n-failures 20&quot;. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283694</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-09-23 09:22:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;ve asked Ossy to help with Qt results and Tor Arne with Mac.

I checked your patch, normally we should update ~140 expected files.
But I thought over this task, and I have a better idea. :) We should
update platform independent expected files first, and Qt specific
after that. I hope we can remove some Qt specific files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283705</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-09-23 09:42:31 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; No, fortunately bots use &quot;--exit-after-n-crashes-or-timeouts 20&quot;
&gt; option instead of previous &quot;--exit-after-n-failures 20&quot;. ;)

&gt; I checked your patch, normally we should update ~140 expected files.
&gt; But I thought over this task, and I have a better idea. :) We should
&gt; update platform independent expected files first, and Qt specific
&gt; after that. I hope we can remove some Qt specific files.

That would be fantastic. :) Nikolas, thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287073</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-09-29 12:57:05 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; No, fortunately bots use &quot;--exit-after-n-crashes-or-timeouts 20&quot;
&gt; &gt; option instead of previous &quot;--exit-after-n-failures 20&quot;. ;)
&gt; 
&gt; &gt; I checked your patch, normally we should update ~140 expected files.
&gt; &gt; But I thought over this task, and I have a better idea. :) We should
&gt; &gt; update platform independent expected files first, and Qt specific
&gt; &gt; after that. I hope we can remove some Qt specific files.
&gt; 
&gt; That would be fantastic. :) Nikolas, thoughts?

To the patch. Please correct me if I&apos;m wrong, but you may get just the relative values for rect or circle, if x,y,.. are in percentage. It would be great if we could get the repaintRect of the shape.
On the other side, we&apos;ll get platform dependent results again, because RenderPath::repaintRectInLocalCoordinates() calls Path::strokeBoundaries and Path::fillBoundaries. So I&apos;m still unsure if this is the right way to go.

Niko, what is your opinion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>287076</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-09-29 13:00:10 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; I&apos;ve asked Ossy to help with Qt results and Tor Arne with Mac.
&gt; 
&gt; I checked your patch, normally we should update ~140 expected files.
&gt; But I thought over this task, and I have a better idea. :) We should
&gt; update platform independent expected files first, and Qt specific
&gt; after that. I hope we can remove some Qt specific files.

Yes, it&apos;s better to test it on mac, create the reuslts and look if other platforms can reuse it afterwards. But we&apos;ll still end up with different results because of the fonts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288140</commentid>
    <comment_count>15</comment_count>
      <attachid>68073</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-01 03:10:10 -0700</bug_when>
    <thetext>Comment on attachment 68073
Proposed patch v2

As discussed on IRC, the right way to go is to introduce a RenderSVGShape class whose repaintRectInLocalCoordinates can be dumped.
The problem is that dumping RenderPath::repaintRectInLocalCoordinates, is that it&apos;s platform-dependant, as Path::boundingBox is used.

As first step, I&apos;d introduce RenderSVGShape : public RenderPath (which should be renamed and moved to rendering/svg/RenderSVGPath first)
and let SVGCircle/RectElement etc. create RenderSVGShape instead of RenderSVGPath.

Once that&apos;s done, we need to introduce platform-dependant ways to create rects, circles, instead of the home-brewn code in Path.cpp (addEllipse, etc.)
Then we need to write a method which calculates the circle/rect/etc. boundaries in a _cross platform_ fashion.

Then RenderSVGShape can use this new logic, and inherit from RenderSVGModelObject, and be completly decoupled from RenderSVGPath.
Once that&apos;s done the DRT problem vanishes.

(This is just a short summary of the IRC discussion).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291496</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-08 01:29:18 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 68073 [details])
&gt; As discussed on IRC, the right way to go is to introduce a RenderSVGShape class whose repaintRectInLocalCoordinates can be dumped.
&gt; The problem is that dumping RenderPath::repaintRectInLocalCoordinates, is that it&apos;s platform-dependant, as Path::boundingBox is used.
&gt; 
&gt; As first step, I&apos;d introduce RenderSVGShape : public RenderPath (which should be renamed and moved to rendering/svg/RenderSVGPath first)
&gt; and let SVGCircle/RectElement etc. create RenderSVGShape instead of RenderSVGPath.
&gt; 
&gt; Once that&apos;s done, we need to introduce platform-dependant ways to create rects, circles, instead of the home-brewn code in Path.cpp (addEllipse, etc.)
&gt; Then we need to write a method which calculates the circle/rect/etc. boundaries in a _cross platform_ fashion.
&gt; 
&gt; Then RenderSVGShape can use this new logic, and inherit from RenderSVGModelObject, and be completly decoupled from RenderSVGPath.
&gt; Once that&apos;s done the DRT problem vanishes.

Ok, we had another discussion. This approach is fine.
We&apos;ll just move SVG away from using the static Path::create* methods, and let them use Path::addEllipse etc. These methods already ask their platform specific implementations, and we don&apos;t need to decompose ellipses to paths etc. on our own.

Andreas patch is just fine!
I&apos;ll upload a baseline for mac, soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291497</commentid>
    <comment_count>17</comment_count>
      <attachid>68073</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-08 01:31:10 -0700</bug_when>
    <thetext>Comment on attachment 68073
Proposed patch v2

Ok, we made up our mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291518</commentid>
    <comment_count>18</comment_count>
      <attachid>70215</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-10-08 02:29:08 -0700</bug_when>
    <thetext>Created attachment 70215
Mac layout test results

As mentioned on IRC, the patch is missing an &quot; || svgElement-&gt;hasTagName(SVGNames::polylineTag)&quot; branch, the rest is perfect.
Please land your patch together with the mac results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291530</commentid>
    <comment_count>19</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-08 02:50:24 -0700</bug_when>
    <thetext>Committed r69386: &lt;http://trac.webkit.org/changeset/69386&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68026</attachid>
            <date>2010-09-19 09:21:50 -0700</date>
            <delta_ts>2010-09-20 06:11:53 -0700</delta_ts>
            <desc>Proposed patch, first stab</desc>
            <filename>bug-46051.diff</filename>
            <type>text/plain</type>
            <size>8951</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjZhODEyOS4uMTE2ODgyMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wOS0xOSAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNWRzogTWFrZSBSZW5kZXJQYXRoIERSVCBvdXRwdXQgcGxh
dGZvcm0taW5kZXBlbmRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2MDUxCisKKyAgICAgICAgTW92ZSBhd2F5IGZyb20gdXNpbmcgdGhlIHBvcnQt
c3BlY2lmaWMgUGF0aDo6ZGVidWdTdHJpbmcoKSB0byBkdW1wCisgICAgICAgIFJlbmRlclBhdGgg
b2JqZWN0cy4gVGhpcyBzaHJpbmtzIHRoZSBEUlQgb3V0cHV0IGRlbHRhIGJldHdlZW4gcGxhdGZv
cm1zCisgICAgICAgIGFuZCBtYWtlcyBpdCBtb3JlIHJlYWRhYmxlIGFzIHdlIG5vdyBkdW1wIG9u
bHkgdGhlIHJlbGV2YW50LAorICAgICAgICBlbGVtZW50LXNwZWNpZmljIHByb3BlcnRpZXMgb2Yg
ZWFjaCBvYmplY3QuCisKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgR2VuZXJhdGUgRFJU
IG91dHB1dCBmb3IgUmVuZGVyUGF0aHMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBtYW5uZXIs
CisgICAgICAgIGR1bXBpbmcgdGhlIHJlbGV2YW50IGVsZW1lbnQgcHJvcGVydGllcy4KKworICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojpp
c0xpbmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzUmVjdEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aXNDaXJjbGVFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmlzRWxsaXBzZUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6aXNQb2x5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50Ojppc1BhdGhFbGVtZW50KToKKyAgICAgICAgQWRkZWQgKHJldHVybiBmYWxzZS4p
CisKKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2lyY2xlRWxlbWVudDo6aXNDaXJjbGVFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50Ojppc0Vs
bGlwc2VFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50Ojppc0xpbmVFbGVtZW50KToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50Ojppc1Bh
dGhFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BvbHlFbGVtZW50Ojppc1BvbHlFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZH
UmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50Ojppc1JlY3RF
bGVtZW50KToKKyAgICAgICAgQWRkZWQgKHJldHVybiB0cnVlLikKKwogMjAxMC0wOS0xOCAgS3dh
bmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
CmluZGV4IDIwZDcyMjAuLjA2OTg1ODcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclRy
ZWVBc1RleHQuY3BwCkBAIC01NywxMSArNTcsMTkgQEAKICNpbmNsdWRlICJSZW5kZXJTVkdSb290
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1Rl
eHQuaCIKKyNpbmNsdWRlICJTVkdDaXJjbGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHQ2hhcmFj
dGVyTGF5b3V0SW5mby5oIgorI2luY2x1ZGUgIlNWR0VsbGlwc2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHSW5saW5lVGV4dEJveC5oIgogI2luY2x1ZGUgIlNWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oIgorI2luY2x1ZGUgIlNWR0xpbmVFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUGF0aEVsZW1l
bnQuaCIKKyNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1Bh
dHRlcm5FbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZH
UG9seUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJTVkdSZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Jvb3RJbmxpbmVCb3guaCIK
ICNpbmNsdWRlICJTVkdTdG9wRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQu
aCIKQEAgLTQyMyw3ICs0MzEsNDMgQEAgc3RhdGljIFRleHRTdHJlYW0mIHdyaXRlUG9zaXRpb25B
bmRTdHlsZShUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvYmoKIHN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJQYXRoJiBw
YXRoKQogewogICAgIHdyaXRlUG9zaXRpb25BbmRTdHlsZSh0cywgcGF0aCk7Ci0gICAgd3JpdGVO
YW1lQW5kUXVvdGVkVmFsdWUodHMsICJkYXRhIiwgcGF0aC5wYXRoKCkuZGVidWdTdHJpbmcoKSk7
CisKKyAgICBBU1NFUlQocGF0aC5ub2RlKCktPmlzU1ZHRWxlbWVudCgpKTsKKyAgICBTVkdFbGVt
ZW50KiBzdmdFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhdGgubm9kZSgpKTsK
KworICAgIGlmIChzdmdFbGVtZW50LT5pc1JlY3RFbGVtZW50KCkpIHsKKyAgICAgICAgU1ZHUmVj
dEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdSZWN0RWxlbWVudCo+KHN2Z0VsZW1l
bnQpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJ4IiwgZWxlbWVudC0+eCgpLnZh
bHVlKGVsZW1lbnQpKTsKKyAgICAgICAgd3JpdGVOYW1lVmFsdWVQYWlyKHRzLCAieSIsIGVsZW1l
bnQtPnkoKS52YWx1ZShlbGVtZW50KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywg
IndpZHRoIiwgZWxlbWVudC0+d2lkdGgoKS52YWx1ZShlbGVtZW50KSk7CisgICAgICAgIHdyaXRl
TmFtZVZhbHVlUGFpcih0cywgImhlaWdodCIsIGVsZW1lbnQtPmhlaWdodCgpLnZhbHVlKGVsZW1l
bnQpKTsKKyAgICB9IGVsc2UgaWYgKHN2Z0VsZW1lbnQtPmlzTGluZUVsZW1lbnQoKSkgeworICAg
ICAgICBTVkdMaW5lRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0xpbmVFbGVtZW50
Kj4oc3ZnRWxlbWVudCk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgIngxIiwgZWxl
bWVudC0+eDEoKS52YWx1ZShlbGVtZW50KSk7CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0
cywgInkxIiwgZWxlbWVudC0+eTEoKS52YWx1ZShlbGVtZW50KSk7CisgICAgICAgIHdyaXRlTmFt
ZVZhbHVlUGFpcih0cywgIngyIiwgZWxlbWVudC0+eDIoKS52YWx1ZShlbGVtZW50KSk7CisgICAg
ICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgInkyIiwgZWxlbWVudC0+eTIoKS52YWx1ZShlbGVt
ZW50KSk7CisgICAgfSBlbHNlIGlmIChzdmdFbGVtZW50LT5pc0VsbGlwc2VFbGVtZW50KCkpIHsK
KyAgICAgICAgU1ZHRWxsaXBzZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGxp
cHNlRWxlbWVudCo+KHN2Z0VsZW1lbnQpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMs
ICJjeCIsIGVsZW1lbnQtPmN4KCkudmFsdWUoZWxlbWVudCkpOworICAgICAgICB3cml0ZU5hbWVW
YWx1ZVBhaXIodHMsICJjeSIsIGVsZW1lbnQtPmN5KCkudmFsdWUoZWxlbWVudCkpOworICAgICAg
ICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJyeCIsIGVsZW1lbnQtPnJ4KCkudmFsdWUoZWxlbWVu
dCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJyeSIsIGVsZW1lbnQtPnJ5KCku
dmFsdWUoZWxlbWVudCkpOworICAgIH0gZWxzZSBpZiAoc3ZnRWxlbWVudC0+aXNDaXJjbGVFbGVt
ZW50KCkpIHsKKyAgICAgICAgU1ZHQ2lyY2xlRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PFNWR0NpcmNsZUVsZW1lbnQqPihzdmdFbGVtZW50KTsKKyAgICAgICAgd3JpdGVOYW1lVmFsdWVQ
YWlyKHRzLCAiY3giLCBlbGVtZW50LT5jeCgpLnZhbHVlKGVsZW1lbnQpKTsKKyAgICAgICAgd3Jp
dGVOYW1lVmFsdWVQYWlyKHRzLCAiY3kiLCBlbGVtZW50LT5jeSgpLnZhbHVlKGVsZW1lbnQpKTsK
KyAgICAgICAgd3JpdGVOYW1lVmFsdWVQYWlyKHRzLCAiciIsIGVsZW1lbnQtPnIoKS52YWx1ZShl
bGVtZW50KSk7CisgICAgfSBlbHNlIGlmIChzdmdFbGVtZW50LT5pc1BvbHlFbGVtZW50KCkpIHsK
KyAgICAgICAgU1ZHUG9seUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdQb2x5RWxl
bWVudCo+KHN2Z0VsZW1lbnQpOworICAgICAgICB3cml0ZU5hbWVBbmRRdW90ZWRWYWx1ZSh0cywg
InBvaW50cyIsIGVsZW1lbnQtPnBvaW50cygpLT52YWx1ZUFzU3RyaW5nKCkpOworICAgIH0gZWxz
ZSBpZiAoc3ZnRWxlbWVudC0+aXNQYXRoRWxlbWVudCgpKSB7CisgICAgICAgIFNWR1BhdGhFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihzdmdFbGVtZW50KTsK
KyAgICAgICAgU3RyaW5nIHBhdGhTdHJpbmc7CisgICAgICAgIFNWR1BhdGhQYXJzZXJGYWN0b3J5
OjpzZWxmKCktPmJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0KGVsZW1lbnQtPnBhdGhTZWdM
aXN0KCksIHBhdGhTdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAgICB3cml0ZU5hbWVB
bmRRdW90ZWRWYWx1ZSh0cywgImRhdGEiLCBwYXRoU3RyaW5nKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmggYi9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVF
bGVtZW50LmgKaW5kZXggZGQxMTc5Mi4uYTYyMDE2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaApA
QCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdDaXJjbGVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIGlzQ2lyY2xlRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFNW
R0NpcmNsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAppbmRleCBmYjI4Mjc5Li5mYzZiMWZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC02MCw2ICs2MCwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEZvciBTVkdUZXN0cwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgICAgICAvLyBG
b3IgU1ZHUmVuZGVyVHJlZUFzVGV4dAorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5lRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1JlY3RF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlz
Q2lyY2xlRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0VsbGlwc2VFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAg
dmlydHVhbCBib29sIGlzUG9seUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNQYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisKICAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShj
b25zdCBRdWFsaWZpZWROYW1lJikgeyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR0Vs
bGlwc2VFbGVtZW50LmggYi9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCmluZGV4IGJl
ZTgxNWMuLjg0OGViYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaApAQCAtMzYsNiArMzYsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdFbGxpcHNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VsbGlwc2VFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHRWxsaXBzZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaCBiL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVt
ZW50LmgKaW5kZXggMjEwMDdmMC4uZTdhYzI0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvU1ZH
TGluZUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCkBAIC0zOCw2
ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNWR0xpbmVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAKKyAgICAgICAgdmlydHVhbCBib29sIGlzTGluZUVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBTVkdMaW5lRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oIGIvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuaAppbmRleCBjYzRlN2JkLi4zZjEzMjI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKQEAgLTU4LDcg
KzU4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0FuaW1hdGVkUGF0aERhdGEgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHUGF0aEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLSAgICAgICAgCisKKyAgICAgICAgdmlydHVhbCBib29sIGlzUGF0aEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKICAgICAgICAgZmxvYXQgZ2V0VG90YWxMZW5n
dGgoKTsKICAgICAgICAgRmxvYXRQb2ludCBnZXRQb2ludEF0TGVuZ3RoKGZsb2F0IGRpc3RhbmNl
KTsKICAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRQYXRoU2VnQXRMZW5ndGgoZmxvYXQgZGlzdGFu
Y2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaCBiL1dlYkNvcmUv
c3ZnL1NWR1BvbHlFbGVtZW50LmgKaW5kZXggNmQzNmY0Yi4uYmJjN2JiNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5oCkBAIC0zOSw2ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCBTVkdQb2ludExpc3QqIHBvaW50cygpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNWR1Bv
aW50TGlzdCogYW5pbWF0ZWRQb2ludHMoKSBjb25zdDsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNQb2x5RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgU1ZHUG9seUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmggYi9XZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5oCmluZGV4IDM4MjA3OGQuLmZkODQwOTUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuaApAQCAtMzYsNiArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdSZWN0RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1JlY3RF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAg
U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAg
IAo=
</data>
<flag name="review"
          id="57470"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68073</attachid>
            <date>2010-09-20 06:11:53 -0700</date>
            <delta_ts>2010-10-08 01:31:10 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-46051-v2.diff</filename>
            <type>text/plain</type>
            <size>4390</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzVmNTJiZi4uYzBiMDljZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wOS0yMCAgQW5kcmVhcyBLbGlu
ZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFNWRzogTWFrZSBSZW5kZXJQYXRoIERSVCBvdXRwdXQgcGxh
dGZvcm0taW5kZXBlbmRlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ2MDUxCisKKyAgICAgICAgTW92ZSBhd2F5IGZyb20gdXNpbmcgdGhlIHBvcnQt
c3BlY2lmaWMgUGF0aDo6ZGVidWdTdHJpbmcoKSB0byBkdW1wCisgICAgICAgIFJlbmRlclBhdGgg
b2JqZWN0cy4gVGhpcyBzaHJpbmtzIHRoZSBEUlQgb3V0cHV0IGRlbHRhIGJldHdlZW4gcGxhdGZv
cm1zCisgICAgICAgIGFuZCBtYWtlcyBpdCBtb3JlIHJlYWRhYmxlIGFzIHdlIG5vdyBkdW1wIG9u
bHkgdGhlIHJlbGV2YW50LAorICAgICAgICBlbGVtZW50LXNwZWNpZmljIHByb3BlcnRpZXMgb2Yg
ZWFjaCBvYmplY3QuCisKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgR2VuZXJhdGUgRFJU
IG91dHB1dCBmb3IgUmVuZGVyUGF0aHMgaW4gYSBwbGF0Zm9ybS1pbmRlcGVuZGVudCBtYW5uZXIs
CisgICAgICAgIGR1bXBpbmcgdGhlIHJlbGV2YW50IGVsZW1lbnQgcHJvcGVydGllcy4KKwogMjAx
MC0wOS0xOSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJUcmVl
QXNUZXh0LmNwcAppbmRleCAyMGQ3MjIwLi5hY2ViMDEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9T
VkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtNTgsMTAgKzU4LDE4IEBACiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJT
VkdDaGFyYWN0ZXJMYXlvdXRJbmZvLmgiCisjaW5jbHVkZSAiU1ZHQ2lyY2xlRWxlbWVudC5oIgor
I2luY2x1ZGUgIlNWR0VsbGlwc2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHSW5saW5lVGV4dEJv
eC5oIgorI2luY2x1ZGUgIlNWR0xpbmVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHUGF0aEVsZW1lbnQuaCIKKyNpbmNsdWRlICJT
VkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUgIlNWR1BhdHRlcm5FbGVtZW50LmgiCisj
aW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCisjaW5jbHVkZSAiU1ZHUG9seUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdSZWN0RWxl
bWVudC5oIgogI2luY2x1ZGUgIlNWR1Jvb3RJbmxpbmVCb3guaCIKICNpbmNsdWRlICJTVkdTdG9w
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTQyMyw3ICs0MzEs
NDMgQEAgc3RhdGljIFRleHRTdHJlYW0mIHdyaXRlUG9zaXRpb25BbmRTdHlsZShUZXh0U3RyZWFt
JiB0cywgY29uc3QgUmVuZGVyT2JqZWN0JiBvYmoKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJQYXRoJiBwYXRoKQogewogICAgIHdyaXRl
UG9zaXRpb25BbmRTdHlsZSh0cywgcGF0aCk7Ci0gICAgd3JpdGVOYW1lQW5kUXVvdGVkVmFsdWUo
dHMsICJkYXRhIiwgcGF0aC5wYXRoKCkuZGVidWdTdHJpbmcoKSk7CisKKyAgICBBU1NFUlQocGF0
aC5ub2RlKCktPmlzU1ZHRWxlbWVudCgpKTsKKyAgICBTVkdFbGVtZW50KiBzdmdFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KHBhdGgubm9kZSgpKTsKKworICAgIGlmIChzdmdFbGVt
ZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpyZWN0VGFnKSkgeworICAgICAgICBTVkdSZWN0RWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR1JlY3RFbGVtZW50Kj4oc3ZnRWxlbWVudCk7
CisgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgIngiLCBlbGVtZW50LT54KCkudmFsdWUo
ZWxlbWVudCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJ5IiwgZWxlbWVudC0+
eSgpLnZhbHVlKGVsZW1lbnQpKTsKKyAgICAgICAgd3JpdGVOYW1lVmFsdWVQYWlyKHRzLCAid2lk
dGgiLCBlbGVtZW50LT53aWR0aCgpLnZhbHVlKGVsZW1lbnQpKTsKKyAgICAgICAgd3JpdGVOYW1l
VmFsdWVQYWlyKHRzLCAiaGVpZ2h0IiwgZWxlbWVudC0+aGVpZ2h0KCkudmFsdWUoZWxlbWVudCkp
OworICAgIH0gZWxzZSBpZiAoc3ZnRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6bGluZVRh
ZykpIHsKKyAgICAgICAgU1ZHTGluZUVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdM
aW5lRWxlbWVudCo+KHN2Z0VsZW1lbnQpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMs
ICJ4MSIsIGVsZW1lbnQtPngxKCkudmFsdWUoZWxlbWVudCkpOworICAgICAgICB3cml0ZU5hbWVW
YWx1ZVBhaXIodHMsICJ5MSIsIGVsZW1lbnQtPnkxKCkudmFsdWUoZWxlbWVudCkpOworICAgICAg
ICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJ4MiIsIGVsZW1lbnQtPngyKCkudmFsdWUoZWxlbWVu
dCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJ5MiIsIGVsZW1lbnQtPnkyKCku
dmFsdWUoZWxlbWVudCkpOworICAgIH0gZWxzZSBpZiAoc3ZnRWxlbWVudC0+aGFzVGFnTmFtZShT
VkdOYW1lczo6ZWxsaXBzZVRhZykpIHsKKyAgICAgICAgU1ZHRWxsaXBzZUVsZW1lbnQqIGVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdFbGxpcHNlRWxlbWVudCo+KHN2Z0VsZW1lbnQpOworICAgICAg
ICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJjeCIsIGVsZW1lbnQtPmN4KCkudmFsdWUoZWxlbWVu
dCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJjeSIsIGVsZW1lbnQtPmN5KCku
dmFsdWUoZWxlbWVudCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJyeCIsIGVs
ZW1lbnQtPnJ4KCkudmFsdWUoZWxlbWVudCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIo
dHMsICJyeSIsIGVsZW1lbnQtPnJ5KCkudmFsdWUoZWxlbWVudCkpOworICAgIH0gZWxzZSBpZiAo
c3ZnRWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6Y2lyY2xlVGFnKSkgeworICAgICAgICBT
VkdDaXJjbGVFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQ2lyY2xlRWxlbWVudCo+
KHN2Z0VsZW1lbnQpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJjeCIsIGVsZW1l
bnQtPmN4KCkudmFsdWUoZWxlbWVudCkpOworICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMs
ICJjeSIsIGVsZW1lbnQtPmN5KCkudmFsdWUoZWxlbWVudCkpOworICAgICAgICB3cml0ZU5hbWVW
YWx1ZVBhaXIodHMsICJyIiwgZWxlbWVudC0+cigpLnZhbHVlKGVsZW1lbnQpKTsKKyAgICB9IGVs
c2UgaWYgKHN2Z0VsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBvbHlnb25UYWcpKSB7Cisg
ICAgICAgIFNWR1BvbHlFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHUG9seUVsZW1l
bnQqPihzdmdFbGVtZW50KTsKKyAgICAgICAgd3JpdGVOYW1lQW5kUXVvdGVkVmFsdWUodHMsICJw
b2ludHMiLCBlbGVtZW50LT5wb2ludHMoKS0+dmFsdWVBc1N0cmluZygpKTsKKyAgICB9IGVsc2Ug
aWYgKHN2Z0VsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcpKSB7CisgICAgICAg
IFNWR1BhdGhFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihz
dmdFbGVtZW50KTsKKyAgICAgICAgU3RyaW5nIHBhdGhTdHJpbmc7CisgICAgICAgIFNWR1BhdGhQ
YXJzZXJGYWN0b3J5OjpzZWxmKCktPmJ1aWxkU3RyaW5nRnJvbVNWR1BhdGhTZWdMaXN0KGVsZW1l
bnQtPnBhdGhTZWdMaXN0KCksIHBhdGhTdHJpbmcsIFVuYWx0ZXJlZFBhcnNpbmcpOworICAgICAg
ICB3cml0ZU5hbWVBbmRRdW90ZWRWYWx1ZSh0cywgImRhdGEiLCBwYXRoU3RyaW5nKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHRzOwogfQog
Cg==
</data>
<flag name="review"
          id="57520"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70215</attachid>
            <date>2010-10-08 02:29:08 -0700</date>
            <delta_ts>2010-10-08 02:29:08 -0700</delta_ts>
            <desc>Mac layout test results</desc>
            <filename>MacLayoutTest.diff</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64"></data>

          </attachment>
      

    </bug>

</bugzilla>