<?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>108941</bug_id>
          
          <creation_ts>2013-02-05 07:32:14 -0800</creation_ts>
          <short_desc>[HarfBuzz][Cairo] harfBuzzGetGlyph is slow and hot</short_desc>
          <delta_ts>2013-02-05 11:39:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Performance</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominik Röttsches (drott)">d-r</reporter>
          <assigned_to name="Dominik Röttsches (drott)">d-r</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mrobinson</cc>
    
    <cc>s.choi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>825470</commentid>
    <comment_count>0</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-02-05 07:32:14 -0800</bug_when>
    <thetext>Using a performance test similar to PerformanceTests/Layout/hindi-line-layout.html but replacing it with arabic test, we see that 
harfBuzzGetGlyph spends too much time in UTF8 encoding and talking to cairo for glyph lookup.

We should adopt a caching implementation similar to Skia&apos;s harfBuzzGetGlyph implementation. The infrastructure for this caching is already anchored in the m_glyphCacheForFaceCacheEntry member of HarfBuzzFace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825550</commentid>
    <comment_count>1</comment_count>
      <attachid>186645</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-02-05 09:29:10 -0800</bug_when>
    <thetext>Created attachment 186645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825559</commentid>
    <comment_count>2</comment_count>
      <attachid>186645</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-05 09:34:14 -0800</bug_when>
    <thetext>Comment on attachment 186645
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=186645&amp;action=review

&gt; Source/WebCore/ChangeLog:3
&gt; +        [HarfBuzz][Cairo] harfBuzzGetGlyph is slow and hot

If she is hot and slow, you gotta make the move!

&gt; Source/WebCore/ChangeLog:18
&gt; +        Arabic line breaking test, under review in
&gt; +        bug 108948 shows about 58% improvement on my system
&gt; +        with this patch.

Very nice! Any idea how much this would affect the page load of a normal arabic site?

&gt; Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:105
&gt; +    cairo_scaled_font_t* scaledFont = hbFontData-&gt;m_cairoScaledFont;

Why not just make an accessor, it is inlined anyway and accessing m_ looks wrong

&gt; Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:113
&gt; +        if (CAIRO_STATUS_SUCCESS != cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0))

why not the other way around != CAIRO_STATUS_SUCCESS ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825589</commentid>
    <comment_count>3</comment_count>
      <attachid>186652</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-02-05 10:19:23 -0800</bug_when>
    <thetext>Created attachment 186652
Patch, v2 - cairo success check syntax.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825598</commentid>
    <comment_count>4</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-02-05 10:26:25 -0800</bug_when>
    <thetext>(In reply to comment #2)

Thanks for taking a look, Kenneth.

&gt; (From update of attachment 186645 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186645&amp;action=review

&gt; &gt; Source/WebCore/ChangeLog:18
&gt; &gt; +        Arabic line breaking test, under review in
&gt; &gt; +        bug 108948 shows about 58% improvement on my system
&gt; &gt; +        with this patch.
&gt; 
&gt; Very nice! Any idea how much this would affect the page load of a normal arabic site?

Not yet, one reason is that I don&apos;t know what a &quot;normal arabic site&quot; is. I hope I can measure this reliably soon. Also, I plan to have additional improvements for pages that render using the complex font path.

&gt; &gt; Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:105
&gt; &gt; +    cairo_scaled_font_t* scaledFont = hbFontData-&gt;m_cairoScaledFont;
&gt; 
&gt; Why not just make an accessor, it is inlined anyway and accessing m_ looks wrong

Took that from the Skia implementaiton. I tested this with an accessor and it&apos;s not automatically inlined. When I put &quot;inline&quot; explicitly, it&apos;s back to normal perfomance. Without &quot;inline&quot; it&apos;s down by 5 runs/s. I think putting an accessor and then an explicit inline doesn&apos;t look better than accessing the m_* in this case. What do you think?

&gt; &gt; Source/WebCore/platform/graphics/harfbuzz/HarfBuzzFaceCairo.cpp:113
&gt; &gt; +        if (CAIRO_STATUS_SUCCESS != cairo_scaled_font_text_to_glyphs(scaledFont, 0, 0, utf8Codepoint.data(), utf8Codepoint.length(), &amp;glyphs, &amp;numGlyphs, 0, 0, 0))
&gt; 
&gt; why not the other way around != CAIRO_STATUS_SUCCESS ?

Inverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825672</commentid>
    <comment_count>5</comment_count>
      <attachid>186652</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 11:39:54 -0800</bug_when>
    <thetext>Comment on attachment 186652
Patch, v2 - cairo success check syntax.

Clearing flags on attachment: 186652

Committed r141908: &lt;http://trac.webkit.org/changeset/141908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825673</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 11:39:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186645</attachid>
            <date>2013-02-05 09:29:10 -0800</date>
            <delta_ts>2013-02-05 10:19:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108941-20130205192546.patch</filename>
            <type>text/plain</type>
            <size>6942</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQxYzMxZjBjODFmOGJk
ODQ5ZTQ4MTZmNTAzZWFjY2ZjMzE0ZWYxMC4uZGU5ZjhmMGEyMTk0YzcxOTMzODljMzE1NjE2MGQ5
ZjdkNzNhYTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTA1ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0hhcmZCdXp6XVtDYWlyb10gaGFyZkJ1enpHZXRHbHlwaCBpcyBzbG93IGFuZCBob3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODk0MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXh0IHRvIGds
eXBoIGNvbnZlcnNpb24gdXNpbmcgQ2Fpcm8gaXMgc2xvdworICAgICAgICBkdWUgdG8gZXhwZW5z
aXZlIHRleHQgY29kZWMgY29udmVyc2lvbiB0byBVVEYtOC4KKyAgICAgICAgQWRkaXRpb25hbGx5
LCB0aGUgZ2x5cGggbG9va3VwIGl0c2VsZiBpcyBleHBlbnNpdmUuCisKKyAgICAgICAgSW5zcGly
ZWQgYnkgdGhlIGFwcHJvYWNoIHRha2VuIGluIEhhcmZCdXp6RmFjZVNraWEuY3BwCisgICAgICAg
IEkgc3VnZ2VzdCB0byBpbXBsZW1lbnQgYSBzaW1pbGFyIGNhY2hpbmcgbWVjaGFuaXNtIHRvCisg
ICAgICAgIGFjY2VsZXJhdGUgdGhpcyBjb252ZXJzaW9uLgorCisgICAgICAgIEFyYWJpYyBsaW5l
IGJyZWFraW5nIHRlc3QsIHVuZGVyIHJldmlldyBpbgorICAgICAgICBidWcgMTA4OTQ4IHNob3dz
IGFib3V0IDU4JSBpbXByb3ZlbWVudCBvbiBteSBzeXN0ZW0KKyAgICAgICAgd2l0aCB0aGlzIHBh
dGNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNl
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpGb250RGF0YTo6SGFyZkJ1enpG
b250RGF0YSk6CisgICAgICAgICAgICBOZXcgY29udGFpbmVyIHN0cnVjdHVyZSB0aGF0IGtlZXBz
IHBvaW50ZXJzCisgICAgICAgICAgICB0byB0aGUgY2Fpcm8gc2NhbGVkIGZvbnQgYXMgd2VsbCBh
cyB0aGUgZ2x5cGggY2FjaGUuCisgICAgICAgIChIYXJmQnV6ekZvbnREYXRhKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZkJ1enpHZXRHbHlwaCk6IFVzaW5nIHRo
ZSBuZXcgY29udGFpbmVyIHN0cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoZSBjYWNoZS4KKyAgICAg
ICAgKFdlYkNvcmU6OmhhcmZCdXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZSk6IFVzaW5nIHRo
ZSBuZXcgY29udGFpbmVyIHN0cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoZSBzY2FsZWQgZm9udC4K
KyAgICAgICAgKFdlYkNvcmU6OmhhcmZCdXp6R2V0R2x5cGhFeHRlbnRzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpkZXN0cm95SGFyZkJ1enpGb250RGF0YSk6IERlc3Ryb3lpbmcgdGhlIGNv
bnRhaW5lciB0aGF0IGhlbGQgdGhlIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1
enpGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgICAgIEluaXRpYWxpemluZyB0aGUgY29udGFp
bmVyIHN0cnVjdHVyZSB3aXRoIHRoZSBwb2ludGVycworICAgICAgICAgICAgdG8gdGhlIGNhY2hl
IHRoYXQgaXMgaGVsZCBpbiBIYXJmQnV6ekZhY2UgYW5kIHRoZSBjYWlybyBzY2FsZWQgZm9udC4K
KwogMjAxMy0wMi0wNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgSU5QVVRfTVVMVElQTEVfRklFTERTX1VJOiBTaG91bGQgbm90IG1vdmUgZm9jdXMgaWYgdGhl
IGVsZW1lbnQgYWxyZWFkeSBoYXMgZm9jdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNwcApp
bmRleCAyZWFhMDkyODdlNDFmYjUzMWRhMjhmNjljNzczYzFmNzhiNWUzYzliLi4yMTMwYmQwMjgx
NjJiMjNlNzQ1OThkNTJhODAxZWEyMzU0MTYwNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fp
cm8uY3BwCkBAIC00Niw2ICs0NiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVj
dCBIYXJmQnV6ekZvbnREYXRhIHsKKyAgICBIYXJmQnV6ekZvbnREYXRhKFdURjo6SGFzaE1hcDx1
aW50MzJfdCwgdWludDE2X3Q+KiBnbHlwaENhY2hlRm9yRmFjZUNhY2hlRW50cnksIGNhaXJvX3Nj
YWxlZF9mb250X3QqIGNhaXJvU2NhbGVkRm9udCkKKyAgICAgICAgOiBtX2dseXBoQ2FjaGVGb3JG
YWNlQ2FjaGVFbnRyeShnbHlwaENhY2hlRm9yRmFjZUNhY2hlRW50cnkpCisgICAgICAgICwgbV9j
YWlyb1NjYWxlZEZvbnQoY2Fpcm9TY2FsZWRGb250KQorICAgIHsgfQorICAgIFdURjo6SGFzaE1h
cDx1aW50MzJfdCwgdWludDE2X3Q+KiBtX2dseXBoQ2FjaGVGb3JGYWNlQ2FjaGVFbnRyeTsKKyAg
ICBjYWlyb19zY2FsZWRfZm9udF90KiBtX2NhaXJvU2NhbGVkRm9udDsKK307CisKIGNsYXNzIENh
aXJvRnRGYWNlTG9ja2VyIHsKIHB1YmxpYzoKICAgICBDYWlyb0Z0RmFjZUxvY2tlcihjYWlyb19z
Y2FsZWRfZm9udF90KiBjYWlyb1NjYWxlZEZvbnQpIDogbV9zY2FsZWRGb250KGNhaXJvU2NhbGVk
Rm9udCkgeyB9OwpAQCAtOTIsMjYgKzEwMSwzMCBAQCBzdGF0aWMgdm9pZCBDYWlyb0dldEdseXBo
V2lkdGhBbmRFeHRlbnRzKGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGhiX2NvZAog
CiBzdGF0aWMgaGJfYm9vbF90IGhhcmZCdXp6R2V0R2x5cGgoaGJfZm9udF90Kiwgdm9pZCogZm9u
dERhdGEsIGhiX2NvZGVwb2ludF90IHVuaWNvZGUsIGhiX2NvZGVwb2ludF90LCBoYl9jb2RlcG9p
bnRfdCogZ2x5cGgsIHZvaWQqKQogewotICAgIEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KGZvbnREYXRhKTsKLSAgICBj
YWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0gcGxhdGZvcm1EYXRhLT5zY2FsZWRGb250
KCk7CisgICAgSGFyZkJ1enpGb250RGF0YSogaGJGb250RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SGFyZkJ1enpGb250RGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBz
Y2FsZWRGb250ID0gaGJGb250RGF0YS0+bV9jYWlyb1NjYWxlZEZvbnQ7CiAgICAgQVNTRVJUKHNj
YWxlZEZvbnQpOwogCi0gICAgY2Fpcm9fZ2x5cGhfdCogZ2x5cGhzID0gMDsKLSAgICBpbnQgbnVt
R2x5cGhzID0gMDsKLSAgICBDU3RyaW5nIHV0ZjhDb2RlcG9pbnQgPSBVVEY4RW5jb2RpbmcoKS5l
bmNvZGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KCZ1bmljb2RlKSwgMSwgUXVlc3Rpb25NYXJr
c0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgaWYgKENBSVJPX1NUQVRVU19TVUNDRVNTICE9IGNhaXJv
X3NjYWxlZF9mb250X3RleHRfdG9fZ2x5cGhzKHNjYWxlZEZvbnQsIDAsIDAsIHV0ZjhDb2RlcG9p
bnQuZGF0YSgpLCB1dGY4Q29kZXBvaW50Lmxlbmd0aCgpLCAmZ2x5cGhzLCAmbnVtR2x5cGhzLCAw
LCAwLCAwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbnVtR2x5cGhzKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKmdseXBoID0gZ2x5cGhzWzBdLmluZGV4OwotICAgIGNh
aXJvX2dseXBoX2ZyZWUoZ2x5cGhzKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBXVEY6Okhhc2hN
YXA8dWludDMyX3QsIHVpbnQxNl90Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IGhiRm9udERhdGEtPm1f
Z2x5cGhDYWNoZUZvckZhY2VDYWNoZUVudHJ5LT5hZGQodW5pY29kZSwgMCk7CisgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGNhaXJvX2dseXBoX3QqIGdseXBocyA9IDA7Cisg
ICAgICAgIGludCBudW1HbHlwaHMgPSAwOworICAgICAgICBDU3RyaW5nIHV0ZjhDb2RlcG9pbnQg
PSBVVEY4RW5jb2RpbmcoKS5lbmNvZGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KCZ1bmljb2Rl
KSwgMSwgUXVlc3Rpb25NYXJrc0ZvclVuZW5jb2RhYmxlcyk7CisgICAgICAgIGlmIChDQUlST19T
VEFUVVNfU1VDQ0VTUyAhPSBjYWlyb19zY2FsZWRfZm9udF90ZXh0X3RvX2dseXBocyhzY2FsZWRG
b250LCAwLCAwLCB1dGY4Q29kZXBvaW50LmRhdGEoKSwgdXRmOENvZGVwb2ludC5sZW5ndGgoKSwg
JmdseXBocywgJm51bUdseXBocywgMCwgMCwgMCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghbnVtR2x5cGhzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gZ2x5cGhzWzBdLmluZGV4OworICAgICAgICBj
YWlyb19nbHlwaF9mcmVlKGdseXBocyk7CisgICAgfQorICAgICpnbHlwaCA9IHJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CisgICAgcmV0dXJuICEhKmdseXBoOwogfQogCiBzdGF0aWMgaGJfcG9zaXRp
b25fdCBoYXJmQnV6ekdldEdseXBoSG9yaXpvbnRhbEFkdmFuY2UoaGJfZm9udF90Kiwgdm9pZCog
Zm9udERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCB2b2lkKikKIHsKLSAgICBGb250UGxhdGZv
cm1EYXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEq
Pihmb250RGF0YSk7Ci0gICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IHBsYXRm
b3JtRGF0YS0+c2NhbGVkRm9udCgpOworICAgIEhhcmZCdXp6Rm9udERhdGEqIGhiRm9udERhdGEg
PSByZWludGVycHJldF9jYXN0PEhhcmZCdXp6Rm9udERhdGEqPihmb250RGF0YSk7CisgICAgY2Fp
cm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IGhiRm9udERhdGEtPm1fY2Fpcm9TY2FsZWRG
b250OwogICAgIEFTU0VSVChzY2FsZWRGb250KTsKIAogICAgIGhiX3Bvc2l0aW9uX3QgYWR2YW5j
ZSA9IDA7CkBAIC0xMjgsOCArMTQxLDggQEAgc3RhdGljIGhiX2Jvb2xfdCBoYXJmQnV6ekdldEds
eXBoSG9yaXpvbnRhbE9yaWdpbihoYl9mb250X3QqLCB2b2lkKiwgaGJfY29kZXBvaW4KIAogc3Rh
dGljIGhiX2Jvb2xfdCBoYXJmQnV6ekdldEdseXBoRXh0ZW50cyhoYl9mb250X3QqLCB2b2lkKiBm
b250RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIGhiX2dseXBoX2V4dGVudHNfdCogZXh0ZW50
cywgdm9pZCopCiB7Ci0gICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRl
cnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOwotICAgIGNhaXJvX3NjYWxl
ZF9mb250X3QqIHNjYWxlZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBI
YXJmQnV6ekZvbnREYXRhKiBoYkZvbnREYXRhID0gcmVpbnRlcnByZXRfY2FzdDxIYXJmQnV6ekZv
bnREYXRhKj4oZm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQg
PSBoYkZvbnREYXRhLT5tX2NhaXJvU2NhbGVkRm9udDsKICAgICBBU1NFUlQoc2NhbGVkRm9udCk7
CiAKICAgICBDYWlyb0dldEdseXBoV2lkdGhBbmRFeHRlbnRzKHNjYWxlZEZvbnQsIGdseXBoLCAw
LCBleHRlbnRzKTsKQEAgLTE4Miw2ICsxOTUsMTIgQEAgc3RhdGljIGhiX2Jsb2JfdCogaGFyZkJ1
enpDYWlyb0dldFRhYmxlKGhiX2ZhY2VfdCosIGhiX3RhZ190IHRhZywgdm9pZCogdXNlckRhdGEK
ICAgICByZXR1cm4gaGJfYmxvYl9jcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
YnVmZmVyKSwgdGFibGVTaXplLCBIQl9NRU1PUllfTU9ERV9XUklUQUJMRSwgYnVmZmVyLCBmYXN0
RnJlZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRlc3Ryb3lIYXJmQnV6ekZvbnREYXRhKHZvaWQqIHVz
ZXJEYXRhKQoreworICAgIEhhcmZCdXp6Rm9udERhdGEqIGhiRm9udERhdGEgPSByZWludGVycHJl
dF9jYXN0PEhhcmZCdXp6Rm9udERhdGEqPih1c2VyRGF0YSk7CisgICAgZGVsZXRlIGhiRm9udERh
dGE7Cit9CisKIGhiX2ZhY2VfdCogSGFyZkJ1enpGYWNlOjpjcmVhdGVGYWNlKCkKIHsKICAgICBo
Yl9mYWNlX3QqIGZhY2UgPSBoYl9mYWNlX2NyZWF0ZV9mb3JfdGFibGVzKGhhcmZCdXp6Q2Fpcm9H
ZXRUYWJsZSwgbV9wbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKSwgMCk7CkBAIC0xOTIsNyArMjEx
LDggQEAgaGJfZmFjZV90KiBIYXJmQnV6ekZhY2U6OmNyZWF0ZUZhY2UoKQogaGJfZm9udF90KiBI
YXJmQnV6ekZhY2U6OmNyZWF0ZUZvbnQoKQogewogICAgIGhiX2ZvbnRfdCogZm9udCA9IGhiX2Zv
bnRfY3JlYXRlKG1fZmFjZSk7Ci0gICAgaGJfZm9udF9zZXRfZnVuY3MoZm9udCwgaGFyZkJ1enpD
YWlyb1RleHRHZXRGb250RnVuY3MoKSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIEhhcmZCdXp6
Rm9udERhdGEqIGhiRm9udERhdGEgPSBuZXcgSGFyZkJ1enpGb250RGF0YShtX2dseXBoQ2FjaGVG
b3JGYWNlQ2FjaGVFbnRyeSwgbV9wbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKSk7CisgICAgaGJf
Zm9udF9zZXRfZnVuY3MoZm9udCwgaGFyZkJ1enpDYWlyb1RleHRHZXRGb250RnVuY3MoKSwgaGJG
b250RGF0YSwgZGVzdHJveUhhcmZCdXp6Rm9udERhdGEpOwogICAgIGNvbnN0IGZsb2F0IHNpemUg
PSBtX3BsYXRmb3JtRGF0YS0+c2l6ZSgpOwogICAgIGlmIChmbG9vcmYoc2l6ZSkgPT0gc2l6ZSkK
ICAgICAgICAgaGJfZm9udF9zZXRfcHBlbShmb250LCBzaXplLCBzaXplKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186652</attachid>
            <date>2013-02-05 10:19:23 -0800</date>
            <delta_ts>2013-02-05 11:39:54 -0800</delta_ts>
            <desc>Patch, v2 - cairo success check syntax.</desc>
            <filename>bug-108941-20130205201600.patch</filename>
            <type>text/plain</type>
            <size>6942</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQxYzMxZjBjODFmOGJk
ODQ5ZTQ4MTZmNTAzZWFjY2ZjMzE0ZWYxMC4uZGU5ZjhmMGEyMTk0YzcxOTMzODljMzE1NjE2MGQ5
ZjdkNzNhYTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTAyLTA1ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
W0hhcmZCdXp6XVtDYWlyb10gaGFyZkJ1enpHZXRHbHlwaCBpcyBzbG93IGFuZCBob3QKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODk0MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSB0ZXh0IHRvIGds
eXBoIGNvbnZlcnNpb24gdXNpbmcgQ2Fpcm8gaXMgc2xvdworICAgICAgICBkdWUgdG8gZXhwZW5z
aXZlIHRleHQgY29kZWMgY29udmVyc2lvbiB0byBVVEYtOC4KKyAgICAgICAgQWRkaXRpb25hbGx5
LCB0aGUgZ2x5cGggbG9va3VwIGl0c2VsZiBpcyBleHBlbnNpdmUuCisKKyAgICAgICAgSW5zcGly
ZWQgYnkgdGhlIGFwcHJvYWNoIHRha2VuIGluIEhhcmZCdXp6RmFjZVNraWEuY3BwCisgICAgICAg
IEkgc3VnZ2VzdCB0byBpbXBsZW1lbnQgYSBzaW1pbGFyIGNhY2hpbmcgbWVjaGFuaXNtIHRvCisg
ICAgICAgIGFjY2VsZXJhdGUgdGhpcyBjb252ZXJzaW9uLgorCisgICAgICAgIEFyYWJpYyBsaW5l
IGJyZWFraW5nIHRlc3QsIHVuZGVyIHJldmlldyBpbgorICAgICAgICBidWcgMTA4OTQ4IHNob3dz
IGFib3V0IDU4JSBpbXByb3ZlbWVudCBvbiBteSBzeXN0ZW0KKyAgICAgICAgd2l0aCB0aGlzIHBh
dGNoLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNl
Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpGb250RGF0YTo6SGFyZkJ1enpG
b250RGF0YSk6CisgICAgICAgICAgICBOZXcgY29udGFpbmVyIHN0cnVjdHVyZSB0aGF0IGtlZXBz
IHBvaW50ZXJzCisgICAgICAgICAgICB0byB0aGUgY2Fpcm8gc2NhbGVkIGZvbnQgYXMgd2VsbCBh
cyB0aGUgZ2x5cGggY2FjaGUuCisgICAgICAgIChIYXJmQnV6ekZvbnREYXRhKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6aGFyZkJ1enpHZXRHbHlwaCk6IFVzaW5nIHRo
ZSBuZXcgY29udGFpbmVyIHN0cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoZSBjYWNoZS4KKyAgICAg
ICAgKFdlYkNvcmU6OmhhcmZCdXp6R2V0R2x5cGhIb3Jpem9udGFsQWR2YW5jZSk6IFVzaW5nIHRo
ZSBuZXcgY29udGFpbmVyIHN0cnVjdHVyZSBmb3IgYWNjZXNzaW5nIHRoZSBzY2FsZWQgZm9udC4K
KyAgICAgICAgKFdlYkNvcmU6OmhhcmZCdXp6R2V0R2x5cGhFeHRlbnRzKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpkZXN0cm95SGFyZkJ1enpGb250RGF0YSk6IERlc3Ryb3lpbmcgdGhlIGNv
bnRhaW5lciB0aGF0IGhlbGQgdGhlIHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1
enpGYWNlOjpjcmVhdGVGb250KToKKyAgICAgICAgICAgIEluaXRpYWxpemluZyB0aGUgY29udGFp
bmVyIHN0cnVjdHVyZSB3aXRoIHRoZSBwb2ludGVycworICAgICAgICAgICAgdG8gdGhlIGNhY2hl
IHRoYXQgaXMgaGVsZCBpbiBIYXJmQnV6ekZhY2UgYW5kIHRoZSBjYWlybyBzY2FsZWQgZm9udC4K
KwogMjAxMy0wMi0wNSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgSU5QVVRfTVVMVElQTEVfRklFTERTX1VJOiBTaG91bGQgbm90IG1vdmUgZm9jdXMgaWYgdGhl
IGVsZW1lbnQgYWxyZWFkeSBoYXMgZm9jdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNwcApp
bmRleCAyZWFhMDkyODdlNDFmYjUzMWRhMjhmNjljNzczYzFmNzhiNWUzYzliLi42MjQ5NWFjYTky
NjU3MjlkM2Q5NmRlYzM4N2QyOGZhNDMzOWY2NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2VDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fp
cm8uY3BwCkBAIC00Niw2ICs0NiwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0cnVj
dCBIYXJmQnV6ekZvbnREYXRhIHsKKyAgICBIYXJmQnV6ekZvbnREYXRhKFdURjo6SGFzaE1hcDx1
aW50MzJfdCwgdWludDE2X3Q+KiBnbHlwaENhY2hlRm9yRmFjZUNhY2hlRW50cnksIGNhaXJvX3Nj
YWxlZF9mb250X3QqIGNhaXJvU2NhbGVkRm9udCkKKyAgICAgICAgOiBtX2dseXBoQ2FjaGVGb3JG
YWNlQ2FjaGVFbnRyeShnbHlwaENhY2hlRm9yRmFjZUNhY2hlRW50cnkpCisgICAgICAgICwgbV9j
YWlyb1NjYWxlZEZvbnQoY2Fpcm9TY2FsZWRGb250KQorICAgIHsgfQorICAgIFdURjo6SGFzaE1h
cDx1aW50MzJfdCwgdWludDE2X3Q+KiBtX2dseXBoQ2FjaGVGb3JGYWNlQ2FjaGVFbnRyeTsKKyAg
ICBjYWlyb19zY2FsZWRfZm9udF90KiBtX2NhaXJvU2NhbGVkRm9udDsKK307CisKIGNsYXNzIENh
aXJvRnRGYWNlTG9ja2VyIHsKIHB1YmxpYzoKICAgICBDYWlyb0Z0RmFjZUxvY2tlcihjYWlyb19z
Y2FsZWRfZm9udF90KiBjYWlyb1NjYWxlZEZvbnQpIDogbV9zY2FsZWRGb250KGNhaXJvU2NhbGVk
Rm9udCkgeyB9OwpAQCAtOTIsMjYgKzEwMSwzMCBAQCBzdGF0aWMgdm9pZCBDYWlyb0dldEdseXBo
V2lkdGhBbmRFeHRlbnRzKGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGhiX2NvZAog
CiBzdGF0aWMgaGJfYm9vbF90IGhhcmZCdXp6R2V0R2x5cGgoaGJfZm9udF90Kiwgdm9pZCogZm9u
dERhdGEsIGhiX2NvZGVwb2ludF90IHVuaWNvZGUsIGhiX2NvZGVwb2ludF90LCBoYl9jb2RlcG9p
bnRfdCogZ2x5cGgsIHZvaWQqKQogewotICAgIEZvbnRQbGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Rm9udFBsYXRmb3JtRGF0YSo+KGZvbnREYXRhKTsKLSAgICBj
YWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb250ID0gcGxhdGZvcm1EYXRhLT5zY2FsZWRGb250
KCk7CisgICAgSGFyZkJ1enpGb250RGF0YSogaGJGb250RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SGFyZkJ1enpGb250RGF0YSo+KGZvbnREYXRhKTsKKyAgICBjYWlyb19zY2FsZWRfZm9udF90KiBz
Y2FsZWRGb250ID0gaGJGb250RGF0YS0+bV9jYWlyb1NjYWxlZEZvbnQ7CiAgICAgQVNTRVJUKHNj
YWxlZEZvbnQpOwogCi0gICAgY2Fpcm9fZ2x5cGhfdCogZ2x5cGhzID0gMDsKLSAgICBpbnQgbnVt
R2x5cGhzID0gMDsKLSAgICBDU3RyaW5nIHV0ZjhDb2RlcG9pbnQgPSBVVEY4RW5jb2RpbmcoKS5l
bmNvZGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KCZ1bmljb2RlKSwgMSwgUXVlc3Rpb25NYXJr
c0ZvclVuZW5jb2RhYmxlcyk7Ci0gICAgaWYgKENBSVJPX1NUQVRVU19TVUNDRVNTICE9IGNhaXJv
X3NjYWxlZF9mb250X3RleHRfdG9fZ2x5cGhzKHNjYWxlZEZvbnQsIDAsIDAsIHV0ZjhDb2RlcG9p
bnQuZGF0YSgpLCB1dGY4Q29kZXBvaW50Lmxlbmd0aCgpLCAmZ2x5cGhzLCAmbnVtR2x5cGhzLCAw
LCAwLCAwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghbnVtR2x5cGhzKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgKmdseXBoID0gZ2x5cGhzWzBdLmluZGV4OwotICAgIGNh
aXJvX2dseXBoX2ZyZWUoZ2x5cGhzKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBXVEY6Okhhc2hN
YXA8dWludDMyX3QsIHVpbnQxNl90Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IGhiRm9udERhdGEtPm1f
Z2x5cGhDYWNoZUZvckZhY2VDYWNoZUVudHJ5LT5hZGQodW5pY29kZSwgMCk7CisgICAgaWYgKHJl
c3VsdC5pc05ld0VudHJ5KSB7CisgICAgICAgIGNhaXJvX2dseXBoX3QqIGdseXBocyA9IDA7Cisg
ICAgICAgIGludCBudW1HbHlwaHMgPSAwOworICAgICAgICBDU3RyaW5nIHV0ZjhDb2RlcG9pbnQg
PSBVVEY4RW5jb2RpbmcoKS5lbmNvZGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KCZ1bmljb2Rl
KSwgMSwgUXVlc3Rpb25NYXJrc0ZvclVuZW5jb2RhYmxlcyk7CisgICAgICAgIGlmIChjYWlyb19z
Y2FsZWRfZm9udF90ZXh0X3RvX2dseXBocyhzY2FsZWRGb250LCAwLCAwLCB1dGY4Q29kZXBvaW50
LmRhdGEoKSwgdXRmOENvZGVwb2ludC5sZW5ndGgoKSwgJmdseXBocywgJm51bUdseXBocywgMCwg
MCwgMCkgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGlmICghbnVtR2x5cGhzKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gZ2x5cGhzWzBdLmluZGV4OworICAgICAgICBj
YWlyb19nbHlwaF9mcmVlKGdseXBocyk7CisgICAgfQorICAgICpnbHlwaCA9IHJlc3VsdC5pdGVy
YXRvci0+dmFsdWU7CisgICAgcmV0dXJuICEhKmdseXBoOwogfQogCiBzdGF0aWMgaGJfcG9zaXRp
b25fdCBoYXJmQnV6ekdldEdseXBoSG9yaXpvbnRhbEFkdmFuY2UoaGJfZm9udF90Kiwgdm9pZCog
Zm9udERhdGEsIGhiX2NvZGVwb2ludF90IGdseXBoLCB2b2lkKikKIHsKLSAgICBGb250UGxhdGZv
cm1EYXRhKiBwbGF0Zm9ybURhdGEgPSByZWludGVycHJldF9jYXN0PEZvbnRQbGF0Zm9ybURhdGEq
Pihmb250RGF0YSk7Ci0gICAgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IHBsYXRm
b3JtRGF0YS0+c2NhbGVkRm9udCgpOworICAgIEhhcmZCdXp6Rm9udERhdGEqIGhiRm9udERhdGEg
PSByZWludGVycHJldF9jYXN0PEhhcmZCdXp6Rm9udERhdGEqPihmb250RGF0YSk7CisgICAgY2Fp
cm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCA9IGhiRm9udERhdGEtPm1fY2Fpcm9TY2FsZWRG
b250OwogICAgIEFTU0VSVChzY2FsZWRGb250KTsKIAogICAgIGhiX3Bvc2l0aW9uX3QgYWR2YW5j
ZSA9IDA7CkBAIC0xMjgsOCArMTQxLDggQEAgc3RhdGljIGhiX2Jvb2xfdCBoYXJmQnV6ekdldEds
eXBoSG9yaXpvbnRhbE9yaWdpbihoYl9mb250X3QqLCB2b2lkKiwgaGJfY29kZXBvaW4KIAogc3Rh
dGljIGhiX2Jvb2xfdCBoYXJmQnV6ekdldEdseXBoRXh0ZW50cyhoYl9mb250X3QqLCB2b2lkKiBm
b250RGF0YSwgaGJfY29kZXBvaW50X3QgZ2x5cGgsIGhiX2dseXBoX2V4dGVudHNfdCogZXh0ZW50
cywgdm9pZCopCiB7Ci0gICAgRm9udFBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhID0gcmVpbnRl
cnByZXRfY2FzdDxGb250UGxhdGZvcm1EYXRhKj4oZm9udERhdGEpOwotICAgIGNhaXJvX3NjYWxl
ZF9mb250X3QqIHNjYWxlZEZvbnQgPSBwbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKTsKKyAgICBI
YXJmQnV6ekZvbnREYXRhKiBoYkZvbnREYXRhID0gcmVpbnRlcnByZXRfY2FzdDxIYXJmQnV6ekZv
bnREYXRhKj4oZm9udERhdGEpOworICAgIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQg
PSBoYkZvbnREYXRhLT5tX2NhaXJvU2NhbGVkRm9udDsKICAgICBBU1NFUlQoc2NhbGVkRm9udCk7
CiAKICAgICBDYWlyb0dldEdseXBoV2lkdGhBbmRFeHRlbnRzKHNjYWxlZEZvbnQsIGdseXBoLCAw
LCBleHRlbnRzKTsKQEAgLTE4Miw2ICsxOTUsMTIgQEAgc3RhdGljIGhiX2Jsb2JfdCogaGFyZkJ1
enpDYWlyb0dldFRhYmxlKGhiX2ZhY2VfdCosIGhiX3RhZ190IHRhZywgdm9pZCogdXNlckRhdGEK
ICAgICByZXR1cm4gaGJfYmxvYl9jcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
YnVmZmVyKSwgdGFibGVTaXplLCBIQl9NRU1PUllfTU9ERV9XUklUQUJMRSwgYnVmZmVyLCBmYXN0
RnJlZSk7CiB9CiAKK3N0YXRpYyB2b2lkIGRlc3Ryb3lIYXJmQnV6ekZvbnREYXRhKHZvaWQqIHVz
ZXJEYXRhKQoreworICAgIEhhcmZCdXp6Rm9udERhdGEqIGhiRm9udERhdGEgPSByZWludGVycHJl
dF9jYXN0PEhhcmZCdXp6Rm9udERhdGEqPih1c2VyRGF0YSk7CisgICAgZGVsZXRlIGhiRm9udERh
dGE7Cit9CisKIGhiX2ZhY2VfdCogSGFyZkJ1enpGYWNlOjpjcmVhdGVGYWNlKCkKIHsKICAgICBo
Yl9mYWNlX3QqIGZhY2UgPSBoYl9mYWNlX2NyZWF0ZV9mb3JfdGFibGVzKGhhcmZCdXp6Q2Fpcm9H
ZXRUYWJsZSwgbV9wbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKSwgMCk7CkBAIC0xOTIsNyArMjEx
LDggQEAgaGJfZmFjZV90KiBIYXJmQnV6ekZhY2U6OmNyZWF0ZUZhY2UoKQogaGJfZm9udF90KiBI
YXJmQnV6ekZhY2U6OmNyZWF0ZUZvbnQoKQogewogICAgIGhiX2ZvbnRfdCogZm9udCA9IGhiX2Zv
bnRfY3JlYXRlKG1fZmFjZSk7Ci0gICAgaGJfZm9udF9zZXRfZnVuY3MoZm9udCwgaGFyZkJ1enpD
YWlyb1RleHRHZXRGb250RnVuY3MoKSwgbV9wbGF0Zm9ybURhdGEsIDApOworICAgIEhhcmZCdXp6
Rm9udERhdGEqIGhiRm9udERhdGEgPSBuZXcgSGFyZkJ1enpGb250RGF0YShtX2dseXBoQ2FjaGVG
b3JGYWNlQ2FjaGVFbnRyeSwgbV9wbGF0Zm9ybURhdGEtPnNjYWxlZEZvbnQoKSk7CisgICAgaGJf
Zm9udF9zZXRfZnVuY3MoZm9udCwgaGFyZkJ1enpDYWlyb1RleHRHZXRGb250RnVuY3MoKSwgaGJG
b250RGF0YSwgZGVzdHJveUhhcmZCdXp6Rm9udERhdGEpOwogICAgIGNvbnN0IGZsb2F0IHNpemUg
PSBtX3BsYXRmb3JtRGF0YS0+c2l6ZSgpOwogICAgIGlmIChmbG9vcmYoc2l6ZSkgPT0gc2l6ZSkK
ICAgICAgICAgaGJfZm9udF9zZXRfcHBlbShmb250LCBzaXplLCBzaXplKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>