<?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>56629</bug_id>
          
          <creation_ts>2011-03-18 01:16:25 -0700</creation_ts>
          <short_desc>REGRESSION(78846) [chromium] Justified text renders at incorrect offsets on windows</short_desc>
          <delta_ts>2011-03-18 19:18:11 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>aroben</cc>
    
    <cc>brettw</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simonjam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>369542</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 01:16:25 -0700</bug_when>
    <thetext>REGRESSION(78846) [chromium] Justified text renders at incorrect offsets on windows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369549</commentid>
    <comment_count>1</comment_count>
      <attachid>86145</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 01:27:44 -0700</bug_when>
    <thetext>Created attachment 86145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369550</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 01:32:18 -0700</bug_when>
    <thetext>Some sample text: http://software.hixie.ch/utilities/js/live-dom-viewer/saved/885

In chrome builds with webkit r78846 and newer this renders hilariously badly when text is selected.  With this patch applied the rendering is better (a smaller error is accumulated), but on some lines it is still possible to accumulate multiple pixels of error and end up with entire glyphs missing.  I can&apos;t figure out why chromium win is so much worse than safari win as there isn&apos;t any logic in FontCGWin&apos;s implementation of drawGlyphs that I can see that attempts to correctly allocate justification spacing around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369577</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 02:16:54 -0700</bug_when>
    <thetext>Upon investigation it looks like the drawGDIGlyphs() path in FontCGWin.cpp isn&apos;t hit in the common case, and I&apos;m not able to hit it by messing about with my text preferences locally.  I&apos;m not sure what is supposed to render down this path but I suspect that justified text is broken if that code is ever hit.

The common codepath in Safari win appears to use CGContextShowGlyphsWithAdvances() which takes a floating point advances and somehow internally maps this to integral advances to pass to GDI.  Presumably the mapping from float advances -&gt; int advances within this codepath is smarter than just rounding each advance to an int.  At a guess I&apos;d speculate that the logic looks like the logic that was removed from WidthIterator.cpp in r78846.

It seems like the way forward is to reimplement WidthIterator&apos;s accumulated floating point error logic in several platforms in order to snap to integer boundaries more accurately.  Hyatt, Mitz - do you have any advice?  This is not an area I&apos;m familiar with so I could possibly be way off base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369803</commentid>
    <comment_count>4</comment_count>
      <attachid>86145</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 12:50:14 -0700</bug_when>
    <thetext>Comment on attachment 86145
Patch

better patch incoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369818</commentid>
    <comment_count>5</comment_count>
      <attachid>86202</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 13:28:57 -0700</bug_when>
    <thetext>Created attachment 86202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369878</commentid>
    <comment_count>6</comment_count>
      <attachid>86202</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-18 14:20:35 -0700</bug_when>
    <thetext>Comment on attachment 86202
Patch

The change looks fine.  BUt why no test updates?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369900</commentid>
    <comment_count>7</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-03-18 14:36:24 -0700</bug_when>
    <thetext>This looks good to me too, although brettw should probably take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369903</commentid>
    <comment_count>8</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 14:43:07 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 86202 [details])
&gt; The change looks fine.  BUt why no test updates?

We already have tests for the rendering of justified text.  They broke on chromium windows at r78846 and were incorrectly rebaselined (for example r78929 added a bad new pixel baseline for fast/text/basic/002.html - the text isn&apos;t justified correctly in the checked in -expected.png).  The problem is with a patch like r78846 that breaks hundreds of tests it&apos;s not very easy to manually check that each change is not a regression.  I don&apos;t think adding more tests will really help with this situation, sadly.

I will rebaseline the tests affected after landing and try to be careful about looking for more regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369936</commentid>
    <comment_count>9</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2011-03-18 15:09:35 -0700</bug_when>
    <thetext>This code looks like it will work to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369937</commentid>
    <comment_count>10</comment_count>
      <attachid>86202</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-03-18 15:11:08 -0700</bug_when>
    <thetext>Comment on attachment 86202
Patch

&lt;3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369970</commentid>
    <comment_count>11</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 15:46:10 -0700</bug_when>
    <thetext>Looks like ~72 pixel test results will be affected - all progressions.  I&apos;ll update test_expectations.txt when landing to avoid churn on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369991</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 16:14:28 -0700</bug_when>
    <thetext>Committed r81528: &lt;http://trac.webkit.org/changeset/81528&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369993</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 16:16:19 -0700</bug_when>
    <thetext>73 tests will need a rebaseline for chromium win.  I verified on my win7 box that all tests progress with this patch, but will pull pixel results off the bots to make sure I get the right thing for winxp.

It&apos;s kind of sad that we have many pixel tests for justified text and we still regress it pretty badly without the tests alerting us of the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370078</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-03-18 19:18:11 -0700</bug_when>
    <thetext>New chromium win pixel baselines landed in http://trac.webkit.org/changeset/81544.  Should be smooth sailing now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86145</attachid>
            <date>2011-03-18 01:27:44 -0700</date>
            <delta_ts>2011-03-18 13:28:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56629-20110318012356.patch</filename>
            <type>text/plain</type>
            <size>2840</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEzNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYmM5NTVjODFlMDE5NjVh
M2RlMDE4OTFmYjc4OGI5MWY0MTYxZDc0Li4zNjk3ZjYwN2UyYjhjNDFkY2RmNDNiZDllYmVmNGE5
NjNkNjY3MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDMtMTggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OKDc4ODQ2KSBbY2hyb21pdW1dIEp1
c3RpZmllZCB0ZXh0IHJlbmRlcnMgYXQgaW5jb3JyZWN0IG9mZnNldHMgb24gd2luZG93cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY2MjkKKworICAg
ICAgICBUaGlzIHJvdW5kcyBmbG9hdGluZyBwb2ludCBhZHZhbmNlcyB0byBpbnQgaW5zdGVhZCBv
ZiBjbGFtcGluZyB2aWEKKyAgICAgICAgY2FzdHMgaW4gc2V2ZXJhbCBwbGFjZXMgd2hlcmUgd2Ug
aGF2ZSB0byBnZW5lcmF0ZSBpbnRlZ2VyIGFkdmFuY2VzCisgICAgICAgIHRvIHBhc3MgaW50byBH
REkuICBUaGlzIG1hdGNoZXMgdGhlIEZvbnRDR1dpbiBjb2RlIG1vcmUgY2xvc2VseQorICAgICAg
ICBhbmQgcHJvZHVjZXMgY29uc2lkZXJhYmx5IGJldHRlciByZXN1bHRzLCBidXQgc3RpbGwgbWlz
cmVuZGVycworICAgICAgICBqdXN0aWZpZWQgdGV4dCB3aGVuIHJlbmRlcmluZyBvbmx5IHBhcnQg
b2YgdGhlIHJ1bi4gIEl0J3MgdW5jbGVhciB0bworICAgICAgICBtZSB3aHkgdGhlIGNocm9taXVt
IHdpbiByZW5kZXJpbmcgaXMgc3RpbGwgd29yc2UgdGhhbiBzYWZhcmkgd2luLCBidXQKKyAgICAg
ICAgYXMgdGhpcyBpcyBub3RhYmx5IGJldHRlciB0aGFuIHRoZSBzdGF0dXMgcXVvIEkgdGhpbmsg
aXQncyBzdGlsbCB3b3J0aAorICAgICAgICBkb2luZy4KKworICAgICAgICBXaWxsIGFmZmVjdCBh
IGNvbnNpZGVyYWJsZSBudW1iZXIgb2YgcGl4ZWwgdGVzdHMgb24gY2hyb21pdW0gd2luLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKwogMjAxMS0wMy0xNyAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjgxMzUwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAKaW5kZXggZTU3YTg0YzFkNzExODdl
OWUwNDdjNjY2OWY0NzNjMWY2MGIzYjY4NC4uOTQ2OTgyODZkNDZkZjE3NDJhMzQ5ZjZjNzFhOTQ1
ZThiMGMyMTgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCkBAIC00MTAsNyArNDEwLDcg
QEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LAogICAgICAgICBpbnQgY3VyV2lkdGggPSAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGN1ckxlbjsgKytpLCArK2dseXBoSW5kZXgpIHsKICAgICAgICAgICAgIGdseXBoc1tpXSA9IGds
eXBoQnVmZmVyLmdseXBoQXQoZnJvbSArIGdseXBoSW5kZXgpOwotICAgICAgICAgICAgYWR2YW5j
ZXNbaV0gPSBzdGF0aWNfY2FzdDxpbnQ+KGdseXBoQnVmZmVyLmFkdmFuY2VBdChmcm9tICsgZ2x5
cGhJbmRleCkpOworICAgICAgICAgICAgYWR2YW5jZXNbaV0gPSBscm91bmRmKGdseXBoQnVmZmVy
LmFkdmFuY2VBdChmcm9tICsgZ2x5cGhJbmRleCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICAvLyBCdWcgMjYwODggLSB2ZXJ5IGxhcmdlIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIHJ1bnMgY2Fu
IGZhaWwgdG8KICAgICAgICAgICAgIC8vIHJlbmRlciBzbyB3ZSBjbGFtcCB0aGUgc2l6ZSBoZXJl
LiBJbiB0aGUgc3BlY3MsIG5lZ2F0aXZlCkBAIC01MDksOCArNTA5LDcgQEAgdm9pZCBGb250Ojpk
cmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAKICAgICAv
LyBVbmlzY3JpYmUgY291bnRzIHRoZSBjb29yZGluYXRlcyBmcm9tIHRoZSB1cHBlciBsZWZ0LCB3
aGlsZSBXZWJLaXQgdXNlcwogICAgIC8vIHRoZSBiYXNlbGluZSwgc28gd2UgaGF2ZSB0byBzdWJ0
cmFjdCBvZmYgdGhlIGFzY2VudC4KLSAgICBzdGF0ZS5kcmF3KGdyYXBoaWNzQ29udGV4dCwgaGRj
LCBzdGF0aWNfY2FzdDxpbnQ+KHBvaW50LngoKSksCi0gICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQ+KHBvaW50LnkoKSAtIGZvbnRNZXRyaWNzKCkuYXNjZW50KCkpLCBmcm9tLCB0byk7Cisg
ICAgc3RhdGUuZHJhdyhncmFwaGljc0NvbnRleHQsIGhkYywgbHJvdW5kZihwb2ludC54KCkpLCBs
cm91bmRmKHBvaW50LnkoKSAtIGZvbnRNZXRyaWNzKCkuYXNjZW50KCkpLCBmcm9tLCB0byk7CiAK
ICAgICBjb250ZXh0LT5jYW52YXMoKS0+ZW5kUGxhdGZvcm1QYWludCgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86202</attachid>
            <date>2011-03-18 13:28:57 -0700</date>
            <delta_ts>2011-03-18 15:11:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56629-20110318132508.patch</filename>
            <type>text/plain</type>
            <size>6399</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODEzNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYmM5NTVjODFlMDE5NjVh
M2RlMDE4OTFmYjc4OGI5MWY0MTYxZDc0Li5hNGQ0NTY5ZmM4OTgxN2Q0M2Y2YmRmNDk5Y2U1MmZh
Yjc0ZWMwOTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDMtMTggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OKDc4ODQ2KSBbY2hyb21pdW1dIEp1
c3RpZmllZCB0ZXh0IHJlbmRlcnMgYXQgaW5jb3JyZWN0IG9mZnNldHMgb24gd2luZG93cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY2MjkKKworICAg
ICAgICBQcmVzZXJ2ZXMgb2Zmc2V0cyBhcyBhYnNvbHV0ZSBmbG9hdGluZyBwb2ludCBvZmZzZXRz
IGFuZCByb3VuZHMgdG8KKyAgICAgICAgYWR2YW5jZXMgYXQgdGhlIGxhc3QgcG9zc2libGUgc2Vj
b25kLiAgSSBjYW4ndCBwcm92ZSB0byBteXNlbGYgdGhhdAorICAgICAgICB0aGlzIGlzIHNvdW5k
IGJ1dCBpdCBzZWVtcyB0byB3b3JrIG9uIHRoZSB0ZXN0IGNhc2VzIEkndmUgY29uc3RydWN0ZWQu
CisKKyAgICAgICAgV2lsbCBwcm9iYWJseSBjaGFuZ2UgdGhlIHBpeGVsIHRlc3RzIG9uIGNocm9t
aXVtIHdpbmRvd3MgZ2l2ZW4gdGhhdCB3ZQorICAgICAgICB3ZXJlIGhvcnJpYmx5IGJyb2tlbiBi
ZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhz
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdDb21wbGV4VGV4dCk6CisKIDIwMTEtMDMt
MTcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4MTM1MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3Bw
CmluZGV4IGU1N2E4NGMxZDcxMTg3ZTllMDQ3YzY2NjlmNDczYzFmNjBiM2I2ODQuLjNjMjU0ZGNi
ZTNjZmQxNjkwNDYzMzc4MjFkM2YxOWQwN2U2ZDNmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2lu
LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWlu
dGVyIDogcHVibGljIFRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXIgewogICAgIC8vIGxlZnQg
b2YgbV9wb2ludC4gV2UgZXhwcmVzcyBpdCB0aGlzIHdheSBzbyB0aGF0IGlmIHdlJ3JlIHVzaW5n
IHRoZSBTa2lhCiAgICAgLy8gZHJhd2luZyBwYXRoIHdlIGNhbiB1c2UgZmxvYXRpbmctcG9pbnQg
cG9zaXRpb25pbmcsIGV2ZW4gdGhvdWdoIHdlIGhhdmUKICAgICAvLyB0byB1c2UgaW50ZWdlciBw
b3NpdGlvbmluZyBpbiB0aGUgR0RJIHBhdGguCi0gICAgYm9vbCBkcmF3R2x5cGhzKGludCBudW1H
bHlwaHMsIGNvbnN0IFdPUkQqIGdseXBocywgY29uc3QgaW50KiBhZHZhbmNlcywgaW50IHN0YXJ0
QWR2YW5jZSkgY29uc3Q7CisgICAgYm9vbCBkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0
IFdPUkQqIGdseXBocywgY29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBj
b25zdDsKIAogIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IGVzdGltYXRlVGV4dEJvdW5k
cygpOwpAQCAtMjU2LDExICsyNTYsMTEgQEAgSW50UmVjdCBUcmFuc3BhcmVuY3lBd2FyZUdseXBo
UGFpbnRlcjo6ZXN0aW1hdGVUZXh0Qm91bmRzKCkKIGJvb2wgVHJhbnNwYXJlbmN5QXdhcmVHbHlw
aFBhaW50ZXI6OmRyYXdHbHlwaHMoaW50IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2Vz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Rh
cnRBZHZhbmNlKSBjb25zdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCBzdGFydEFkdmFuY2UpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3VzZUdESSkg
ewogICAgICAgICBTa1BvaW50IG9yaWdpbiA9IG1fcG9pbnQ7Ci0gICAgICAgIG9yaWdpbi5mWCAr
PSBzdGFydEFkdmFuY2U7CisgICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0VG9TY2FsYXIoc3Rh
cnRBZHZhbmNlKTsKICAgICAgICAgcmV0dXJuIHBhaW50U2tpYVRleHQobV9ncmFwaGljc0NvbnRl
eHQsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVtR2x5cGhzLCBnbHlwaHMsIGFkdmFuY2VzLCAwLCAmb3JpZ2luKTsKICAgICB9
CkBAIC00MDAsMTcgKzQwMCwyNSBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgVmVjdG9yPFdPUkQsIGtNYXhCdWZmZXJMZW5ndGg+
IGdseXBoczsKICAgICBWZWN0b3I8aW50LCBrTWF4QnVmZmVyTGVuZ3RoPiBhZHZhbmNlczsKICAg
ICBpbnQgZ2x5cGhJbmRleCA9IDA7ICAvLyBUaGUgc3RhcnRpbmcgZ2x5cGggb2YgdGhlIGN1cnJl
bnQgY2h1bmsuCi0gICAgaW50IGN1ckFkdmFuY2UgPSAwOyAgLy8gSG93IGZhciBmcm9tIHRoZSBs
ZWZ0IHRoZSBjdXJyZW50IGNodW5rIGlzLgorCisgICAgLy8gSW4gb3JkZXIgdG8gcm91bmQgYWxs
IG9mZnNldHMgdG8gdGhlIGNvcnJlY3QgcGl4ZWwgYm91bmRhcnksIHRoaXMgY29kZSBrZWVwcyB0
cmFjayBvZiB0aGUgYWJzb2x1dGUgcG9zaXRpb24KKyAgICAvLyBvZiBlYWNoIGdseXBoIGluIGZs
b2F0aW5nIHBvaW50IHVuaXRzIGFuZCByb3VuZHMgdG8gaW50ZWdlciBhZHZhbmNlcyBhdCB0aGUg
bGFzdCBwb3NzaWJsZSBtb21lbnQuCisKKyAgICBmbG9hdCBob3Jpem9udGFsT2Zmc2V0ID0gcG9p
bnQueCgpOyAvLyBUaGUgZmxvYXRpbmcgcG9pbnQgb2Zmc2V0IG9mIHRoZSBsZWZ0IHNpZGUgb2Yg
dGhlIGN1cnJlbnQgZ2x5cGguCisgICAgaW50IGxhc3RIb3Jpem9udGFsT2Zmc2V0Um91bmRlZCA9
IGxyb3VuZGYoaG9yaXpvbnRhbE9mZnNldCk7IC8vIFRoZSByb3VuZGVkIG9mZnNldCBvZiB0aGUg
bGVmdCBzaWRlIG9mIHRoZSBsYXN0IGdseXBoIHJlbmRlcmVkLgogICAgIHdoaWxlIChnbHlwaElu
ZGV4IDwgbnVtR2x5cGhzKSB7CiAgICAgICAgIC8vIEhvdyBtYW55IGNoYXJzIHdpbGwgYmUgaW4g
dGhpcyBjaHVuaz8KICAgICAgICAgaW50IGN1ckxlbiA9IHN0ZDo6bWluKGtNYXhCdWZmZXJMZW5n
dGgsIG51bUdseXBocyAtIGdseXBoSW5kZXgpOwogICAgICAgICBnbHlwaHMucmVzaXplKGN1ckxl
bik7CiAgICAgICAgIGFkdmFuY2VzLnJlc2l6ZShjdXJMZW4pOwogCi0gICAgICAgIGludCBjdXJX
aWR0aCA9IDA7CisgICAgICAgIGZsb2F0IGN1cnJlbnRXaWR0aCA9IDA7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgY3VyTGVuOyArK2ksICsrZ2x5cGhJbmRleCkgewogICAgICAgICAgICAg
Z2x5cGhzW2ldID0gZ2x5cGhCdWZmZXIuZ2x5cGhBdChmcm9tICsgZ2x5cGhJbmRleCk7Ci0gICAg
ICAgICAgICBhZHZhbmNlc1tpXSA9IHN0YXRpY19jYXN0PGludD4oZ2x5cGhCdWZmZXIuYWR2YW5j
ZUF0KGZyb20gKyBnbHlwaEluZGV4KSk7CisgICAgICAgICAgICBob3Jpem9udGFsT2Zmc2V0ICs9
IGdseXBoQnVmZmVyLmFkdmFuY2VBdChmcm9tICsgZ2x5cGhJbmRleCk7CisgICAgICAgICAgICBh
ZHZhbmNlc1tpXSA9IGxyb3VuZGYoaG9yaXpvbnRhbE9mZnNldCkgLSBsYXN0SG9yaXpvbnRhbE9m
ZnNldFJvdW5kZWQ7CisgICAgICAgICAgICBsYXN0SG9yaXpvbnRhbE9mZnNldFJvdW5kZWQgKz0g
YWR2YW5jZXNbaV07CisgICAgICAgICAgICBjdXJyZW50V2lkdGggKz0gZ2x5cGhCdWZmZXIuYWR2
YW5jZUF0KGZyb20gKyBnbHlwaEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8g
QnVnIDI2MDg4IC0gdmVyeSBsYXJnZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBydW5zIGNhbiBmYWls
IHRvCiAgICAgICAgICAgICAvLyByZW5kZXIgc28gd2UgY2xhbXAgdGhlIHNpemUgaGVyZS4gSW4g
dGhlIHNwZWNzLCBuZWdhdGl2ZQpAQCAtNDIwLDE1ICs0MjgsMTQgQEAgdm9pZCBGb250OjpkcmF3
R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAgICAgLy8g
LTMyODMwLCBzbyB3ZSBnaXZlIG91cnNlbHZlcyBhIGxpdHRsZSBicmVhdGhpbmcgcm9vbS4KICAg
ICAgICAgICAgIGNvbnN0IGludCBtYXhOZWdhdGl2ZVJ1biA9IC0zMjc2ODsKICAgICAgICAgICAg
IGNvbnN0IGludCBtYXhQb3NpdGl2ZVJ1biA9ICAzMjc2ODsKLSAgICAgICAgICAgIGlmICgoY3Vy
V2lkdGggKyBhZHZhbmNlc1tpXSA8IG1heE5lZ2F0aXZlUnVuKSB8fCAoY3VyV2lkdGggKyBhZHZh
bmNlc1tpXSA+IG1heFBvc2l0aXZlUnVuKSkgCisgICAgICAgICAgICBpZiAoKGN1cnJlbnRXaWR0
aCArIGFkdmFuY2VzW2ldIDwgbWF4TmVnYXRpdmVSdW4pIHx8IChjdXJyZW50V2lkdGggKyBhZHZh
bmNlc1tpXSA+IG1heFBvc2l0aXZlUnVuKSkgCiAgICAgICAgICAgICAgICAgYWR2YW5jZXNbaV0g
PSAwOwotICAgICAgICAgICAgY3VyV2lkdGggKz0gYWR2YW5jZXNbaV07CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBBY3R1YWxseSBkcmF3IHRoZSBnbHlwaHMgKHdpdGggcmV0cnkgb24gZmFpbHVy
ZSkuCiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICBmb3IgKGludCBleGVj
dXRpb25zID0gMDsgZXhlY3V0aW9ucyA8IDI7ICsrZXhlY3V0aW9ucykgewotICAgICAgICAgICAg
c3VjY2VzcyA9IHBhaW50ZXIuZHJhd0dseXBocyhjdXJMZW4sICZnbHlwaHNbMF0sICZhZHZhbmNl
c1swXSwgY3VyQWR2YW5jZSk7CisgICAgICAgICAgICBzdWNjZXNzID0gcGFpbnRlci5kcmF3R2x5
cGhzKGN1ckxlbiwgJmdseXBoc1swXSwgJmFkdmFuY2VzWzBdLCBob3Jpem9udGFsT2Zmc2V0IC0g
cG9pbnQueCgpIC0gY3VycmVudFdpZHRoKTsKICAgICAgICAgICAgIGlmICghc3VjY2VzcyAmJiBl
eGVjdXRpb25zID09IDApIHsKICAgICAgICAgICAgICAgICAvLyBBc2sgdGhlIGJyb3dzZXIgdG8g
bG9hZCB0aGUgZm9udCBmb3IgdXMgYW5kIHJldHJ5LgogICAgICAgICAgICAgICAgIFBsYXRmb3Jt
QnJpZGdlOjplbnN1cmVGb250TG9hZGVkKGZvbnQtPnBsYXRmb3JtRGF0YSgpLmhmb250KCkpOwpA
QCAtNDM5LDggKzQ0Niw2IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwKIAogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBkcmF3IHRoZSBnbHlwaHMgYWZ0ZXIgc2Vjb25kIGF0dGVtcHQi
KTsKLQotICAgICAgICBjdXJBZHZhbmNlICs9IGN1cldpZHRoOwogICAgIH0KIH0KIApAQCAtNTA5
LDggKzUxNCw3IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LAogCiAgICAgLy8gVW5pc2NyaWJlIGNvdW50cyB0aGUgY29vcmRpbmF0
ZXMgZnJvbSB0aGUgdXBwZXIgbGVmdCwgd2hpbGUgV2ViS2l0IHVzZXMKICAgICAvLyB0aGUgYmFz
ZWxpbmUsIHNvIHdlIGhhdmUgdG8gc3VidHJhY3Qgb2ZmIHRoZSBhc2NlbnQuCi0gICAgc3RhdGUu
ZHJhdyhncmFwaGljc0NvbnRleHQsIGhkYywgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC54KCkpLAot
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC55KCkgLSBmb250TWV0cmljcygp
LmFzY2VudCgpKSwgZnJvbSwgdG8pOworICAgIHN0YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBo
ZGMsIGxyb3VuZGYocG9pbnQueCgpKSwgbHJvdW5kZihwb2ludC55KCkgLSBmb250TWV0cmljcygp
LmFzY2VudCgpKSwgZnJvbSwgdG8pOwogCiAgICAgY29udGV4dC0+Y2FudmFzKCktPmVuZFBsYXRm
b3JtUGFpbnQoKTsKIH0K
</data>
<flag name="review"
          id="78435"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>