<?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>89506</bug_id>
          
          <creation_ts>2012-06-19 13:31:26 -0700</creation_ts>
          <short_desc>GraphicsContext::setCTM usage in SVGInlineTextBox::paintTextWithShadows breaks per-tile painting in chromium.</short_desc>
          <delta_ts>2012-06-28 12:49:36 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>89888</dup_id>
          
          <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="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>reed</cc>
    
    <cc>tomhudson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>652735</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-19 13:31:26 -0700</bug_when>
    <thetext>GraphicsContext::save()/restore() should be used instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652740</commentid>
    <comment_count>1</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-06-19 13:36:50 -0700</bug_when>
    <thetext>or (possibly)

void setMyMatrix(const SkMatrix&amp; mat) {
    SkMatrix inverse;
    if (canvas-&gt;getTotalMatrix().invert(&amp;inverse)) {
        canvas-&gt;concat(mat);
        canvas-&gt;concat(inverse);
    }
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652773</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-19 13:57:07 -0700</bug_when>
    <thetext>Why can&apos;t the picture record the CTM?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652782</commentid>
    <comment_count>3</comment_count>
      <attachid>148416</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-19 14:02:34 -0700</bug_when>
    <thetext>Created attachment 148416
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652790</commentid>
    <comment_count>4</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-19 14:08:20 -0700</bug_when>
    <thetext>The attached patch just switches to using a save()/restore(). I&apos;d prefer to just remove the &quot;scalingFactor != 1&quot; conditions completely but I guess that might cause a performance regression as I assume they are there for a reason.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652792</commentid>
    <comment_count>5</comment_count>
      <attachid>148416</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-06-19 14:09:28 -0700</bug_when>
    <thetext>Comment on attachment 148416
Patch

looks better than the old code, and will work with pictures. nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652812</commentid>
    <comment_count>6</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-19 14:24:21 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Why can&apos;t the picture record the CTM?

We use a different translation offsets for each tile. setCTM playback will only be correct when the tile offset is 0,0 as it depends on the result from the getCTM call during recording.

Maybe we should abort when getCTM is call during recording?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652847</commentid>
    <comment_count>7</comment_count>
      <attachid>148431</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-19 14:51:20 -0700</bug_when>
    <thetext>Created attachment 148431
Patch

Add a bit more information to the ChangeLog entry about why the getCTM/setCTM usage is causing breakage in chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652863</commentid>
    <comment_count>8</comment_count>
      <attachid>148431</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-06-19 15:04:28 -0700</bug_when>
    <thetext>Comment on attachment 148431
Patch

It&apos;s not immediately clear to me how to review this.  I would expect there to be some performance impact to this change, no?  Saving a context is expensive in many implementations, and this will make scaled text save the context for every paint of every text run?  Is Chromium&apos;s tile-based model the future?  Are other platforms going to see this sort of correctness concern?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652877</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-19 15:22:33 -0700</bug_when>
    <thetext>I think we should just make GraphicsContext::(set|get)CTM work with the skia implementation, or if we can&apos;t/won&apos;t do that see if we can remove it.  I don&apos;t think it is acceptable to have an implementation of GraphicsContext where some functions simply do not work.

This is separate from the question of whether the SVGInlineTextBox&apos;s implementation strategy is ideal or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652887</commentid>
    <comment_count>10</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-19 15:32:44 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I think we should just make GraphicsContext::(set|get)CTM work with the skia implementation, or if we can&apos;t/won&apos;t do that see if we can remove it.  I don&apos;t think it is acceptable to have an implementation of GraphicsContext where some functions simply do not work.
&gt; 

I&apos;m with you on that. Maybe we could add a device offset to SkCanvas that effects all rendering just like an initial translation but is not included in the CTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652962</commentid>
    <comment_count>11</comment_count>
      <attachid>148431</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-19 16:39:40 -0700</bug_when>
    <thetext>Comment on attachment 148431
Patch

R- for now - this isn&apos;t an obvious improvement or even obviously correct (there was some logic in normalizeTransform that is no longer called, although I&apos;m not sure what it is all about).

If all this wants to do is locally set a scale, could we just undo the scale by hand instead of save()/restore()ing the whole context?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652993</commentid>
    <comment_count>12</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-19 16:56:07 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 148431 [details])
&gt; R- for now - this isn&apos;t an obvious improvement or even obviously correct (there was some logic in normalizeTransform that is no longer called, although I&apos;m not sure what it is all about).
&gt; 
&gt; If all this wants to do is locally set a scale, could we just undo the scale by hand instead of save()/restore()ing the whole context?

It&apos;s a shame that save()/restore()ing is not lightweight on all platforms. I think it&apos;s more intuitive that optimizations such as integer translation can be tracked when save()/restore() pairs are used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>652997</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-19 16:57:52 -0700</bug_when>
    <thetext>I don&apos;t know, maybe it is in fact cheap.  None of this really gets to the point of the patch, however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653521</commentid>
    <comment_count>14</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-06-20 08:55:43 -0700</bug_when>
    <thetext>my read of the checkin when normalizeTransform() was added, was it was a concession to DRT to make images between 32bit CG and 64bit CG more the same. Not clear it &quot;fixed&quot; anything at the spec or user level, and was CG specific.

For skia: save/scale/restore is by far the most compact and speed-efficient, matches the rest of webkit&apos;s usage pattern, and will work seamlessly in all of its backends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655347</commentid>
    <comment_count>15</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-06-22 03:47:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 148431 [details])
&gt; R- for now - this isn&apos;t an obvious improvement or even obviously correct (there was some logic in normalizeTransform that is no longer called, although I&apos;m not sure what it is all about).
&gt; 
&gt; If all this wants to do is locally set a scale, could we just undo the scale by hand instead of save()/restore()ing the whole context?

The existing code only tried to avoid 32bit vs. 64bit differences that we saw in text rendering.
Short story: it failed - normalizeTransform, as well as the whole setCTM() stuff, was a test, and it failed, and can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655392</commentid>
    <comment_count>16</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2012-06-22 06:00:36 -0700</bug_when>
    <thetext>sweet!

Such a change may create a *lot* of rebaselines. Perhaps we can opt-in to that cleanup/change per platform, so as not to force it for platforms that don&apos;t want it (or don&apos;t care). I can post such a CL, unless David wants to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655445</commentid>
    <comment_count>17</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-22 07:32:56 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; sweet!
&gt; 
&gt; Such a change may create a *lot* of rebaselines. Perhaps we can opt-in to that cleanup/change per platform, so as not to force it for platforms that don&apos;t want it (or don&apos;t care). I can post such a CL, unless David wants to.

Please go ahead and create such a CL if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659712</commentid>
    <comment_count>18</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-06-28 12:49:36 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 89888 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148416</attachid>
            <date>2012-06-19 14:02:34 -0700</date>
            <delta_ts>2012-06-19 14:51:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89506-20120619170233.patch</filename>
            <type>text/plain</type>
            <size>2360</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2NjlmNmYwZWJmNTZh
NThmZmJmYzg3ZjFlY2Q3ZTllMGFkN2NkYS4uZDc1ODVmODk2YzExZmVhMzI4ZWNjZWI2OGMxZGE5
MGI5MDVmMGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTE5ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0OjpzZXRDVE0gdXNhZ2UgaW4gU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRv
d3MgYnJlYWtzIHBlci10aWxlIHBhaW50aW5nIGluIGNocm9taXVtLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSBzYXZlL3Jlc3RvcmUgcGFpciBm
b3IgdGVtcG9yYXJ5IG1vZGlmaWNhdGlvbiB0byB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBzdGF0
ZSBpbnN0ZWFkIG9mIGdldENUTS9zZXRDVE0uIGdldENUTS9zZXRDVE0gZG9lc24ndCBuZWNlc3Nh
cmlseQorICAgICAgICBwcmVzZXJ2ZSB0aGUgZnVsbCB0cmFuc2Zvcm1hdGlvbiBzdGF0ZS4KKwor
ICAgICAgICBUZXN0OiBzdmcvY3VzdG9tL2pzLWxhdGUtZ3JhZGllbnQtY3JlYXRpb24uc3ZnCisK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MpOgorCiAyMDEy
LTA2LTE5ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
Q3Jhc2ggaW4gUmVuZGVySW5saW5lOjp3aWxsQmVEZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA5MzAyYWVmODAy
NzkwMmRjNzQ4OTM5NWIxZGE3Y2QzMjA0Mjk2M2IzLi5iOWY3YWFjODVmZTgzYmY1MDVmYjM4NzI5
ZTdmODlkYzUxNDRjNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR0lubGluZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHSW5saW5lVGV4dEJveC5jcHAKQEAgLTY0MywyMSArNjQzLDE1IEBAIHZvaWQgU1ZHSW5saW5l
VGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBS
ZW5kZXJTdHlsCiAgICAgICAgIGlmIChzaGFkb3cpCiAgICAgICAgICAgICBleHRyYU9mZnNldCA9
IGFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQoY29udGV4dCwgc2hhZG93LCBzaGFkb3dSZWN0
LCBmYWxzZSAvKiBzdHJva2VkICovLCB0cnVlIC8qIG9wYXF1ZSAqLywgdHJ1ZSAvKiBob3Jpem9u
dGFsICovKTsKIAotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gb3JpZ2luYWxUcmFuc2Zvcm07CiAg
ICAgICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpIHsKLSAgICAgICAgICAgIG9yaWdpbmFsVHJh
bnNmb3JtID0gY29udGV4dC0+Z2V0Q1RNKCk7Ci0KLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9y
bSBuZXdUcmFuc2Zvcm0gPSBvcmlnaW5hbFRyYW5zZm9ybTsKLSAgICAgICAgICAgIG5ld1RyYW5z
Zm9ybS5zY2FsZSgxIC8gc2NhbGluZ0ZhY3Rvcik7Ci0gICAgICAgICAgICBub3JtYWxpemVUcmFu
c2Zvcm0obmV3VHJhbnNmb3JtKTsKLQotICAgICAgICAgICAgY29udGV4dC0+c2V0Q1RNKG5ld1Ry
YW5zZm9ybSk7CisgICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICBjb250
ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9y
KSk7CiAgICAgICAgIH0KIAogICAgICAgICBzY2FsZWRGb250LmRyYXdUZXh0KGNvbnRleHQsIHRl
eHRSdW4sIHRleHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRp
b24pOwogCiAgICAgICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpCi0gICAgICAgICAgICBjb250
ZXh0LT5zZXRDVE0ob3JpZ2luYWxUcmFuc2Zvcm0pOworICAgICAgICAgICAgY29udGV4dC0+cmVz
dG9yZSgpOwogCiAgICAgICAgIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGlu
Zyhjb250ZXh0LCB0ZXh0UnVuKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148431</attachid>
            <date>2012-06-19 14:51:20 -0700</date>
            <delta_ts>2012-06-19 16:39:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89506-20120619175120.patch</filename>
            <type>text/plain</type>
            <size>2693</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk2NjlmNmYwZWJmNTZh
NThmZmJmYzg3ZjFlY2Q3ZTllMGFkN2NkYS4uYTIzNGM5MDM3NDc4ZTU4ZWUxNDhjY2M2NDJkZGJj
YjQ5NmFmNDZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTE5ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0OjpzZXRDVE0gdXNhZ2UgaW4gU1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRv
d3MgYnJlYWtzIHBlci10aWxlIHBhaW50aW5nIGluIGNocm9taXVtLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk1MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSBzYXZlL3Jlc3RvcmUgcGFpciBm
b3IgdGVtcG9yYXJ5IG1vZGlmaWNhdGlvbiB0byB0cmFuc2Zvcm1hdGlvbgorICAgICAgICBzdGF0
ZSBpbnN0ZWFkIG9mIGdldENUTS9zZXRDVE0uCisKKyAgICAgICAgQ2hyb21pdW0ncyBwZXItdGls
ZSBwYWludGluZyBzeXN0ZW0gcmVjb3JkcyBhbGwgcmVuZGVyaW5nIGNvbW1hbmRzIGluCisgICAg
ICAgIGEgU2tQaWN0dXJlLiBUaGUgU2tQaWN0dXJlIGlzIGxhdGVyIHBsYXllZCBiYWNrIHdpdGgg
YSBkaWZmZXJlbnQgY2xpcAorICAgICAgICBhbmQgaW5pdGlhbCB0cmFuc2Zvcm1hdGlvbiBzdGF0
ZS4gQW55IHJlbmRlcmluZyBjb2RlIHRoYXQgZGVwZW5kcyBvbgorICAgICAgICB0aGUgbWF0cml4
IHJldHVybmVkIGJ5IGdldENUTSB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGlzIHN5c3Rl
bQorICAgICAgICBhcyBpdCB3aWxsIGJlIHVuYWZmZWN0ZWQgYnkgdGhlIHRoZSBpbml0aWFsIHRy
YW5zZm9ybWF0aW9uIHN0YXRlIHNldAorICAgICAgICBhdCBwbGF5YmFjay4KKworICAgICAgICBU
ZXN0OiBzdmcvY3VzdG9tL2pzLWxhdGUtZ3JhZGllbnQtY3JlYXRpb24uc3ZnCisKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHSW5saW5lVGV4dEJveDo6cGFpbnRUZXh0V2l0aFNoYWRvd3MpOgorCiAyMDEyLTA2LTE5ICBB
Ymhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4g
UmVuZGVySW5saW5lOjp3aWxsQmVEZXN0cm95ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmNwcAppbmRleCA5MzAyYWVmODAyNzkwMmRjNzQ4
OTM5NWIxZGE3Y2QzMjA0Mjk2M2IzLi5iOWY3YWFjODVmZTgzYmY1MDVmYjM4NzI5ZTdmODlkYzUx
NDRjNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGlu
ZVRleHRCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
VGV4dEJveC5jcHAKQEAgLTY0MywyMSArNjQzLDE1IEBAIHZvaWQgU1ZHSW5saW5lVGV4dEJveDo6
cGFpbnRUZXh0V2l0aFNoYWRvd3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJTdHls
CiAgICAgICAgIGlmIChzaGFkb3cpCiAgICAgICAgICAgICBleHRyYU9mZnNldCA9IGFwcGx5U2hh
ZG93VG9HcmFwaGljc0NvbnRleHQoY29udGV4dCwgc2hhZG93LCBzaGFkb3dSZWN0LCBmYWxzZSAv
KiBzdHJva2VkICovLCB0cnVlIC8qIG9wYXF1ZSAqLywgdHJ1ZSAvKiBob3Jpem9udGFsICovKTsK
IAotICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gb3JpZ2luYWxUcmFuc2Zvcm07CiAgICAgICAgIGlm
IChzY2FsaW5nRmFjdG9yICE9IDEpIHsKLSAgICAgICAgICAgIG9yaWdpbmFsVHJhbnNmb3JtID0g
Y29udGV4dC0+Z2V0Q1RNKCk7Ci0KLSAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSBuZXdUcmFu
c2Zvcm0gPSBvcmlnaW5hbFRyYW5zZm9ybTsKLSAgICAgICAgICAgIG5ld1RyYW5zZm9ybS5zY2Fs
ZSgxIC8gc2NhbGluZ0ZhY3Rvcik7Ci0gICAgICAgICAgICBub3JtYWxpemVUcmFuc2Zvcm0obmV3
VHJhbnNmb3JtKTsKLQotICAgICAgICAgICAgY29udGV4dC0+c2V0Q1RNKG5ld1RyYW5zZm9ybSk7
CisgICAgICAgICAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgICAgICAgICBjb250ZXh0LT5zY2Fs
ZShGbG9hdFNpemUoMSAvIHNjYWxpbmdGYWN0b3IsIDEgLyBzY2FsaW5nRmFjdG9yKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBzY2FsZWRGb250LmRyYXdUZXh0KGNvbnRleHQsIHRleHRSdW4sIHRl
eHRPcmlnaW4gKyBleHRyYU9mZnNldCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwogCiAg
ICAgICAgIGlmIChzY2FsaW5nRmFjdG9yICE9IDEpCi0gICAgICAgICAgICBjb250ZXh0LT5zZXRD
VE0ob3JpZ2luYWxUcmFuc2Zvcm0pOworICAgICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwog
CiAgICAgICAgIHJlc3RvcmVHcmFwaGljc0NvbnRleHRBZnRlclRleHRQYWludGluZyhjb250ZXh0
LCB0ZXh0UnVuKTsKIAo=
</data>
<flag name="review"
          id="156159"
          type_id="1"
          status="-"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>