<?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>214550</bug_id>
          
          <creation_ts>2020-07-20 05:53:45 -0700</creation_ts>
          <short_desc>[FreeType] Add support for text-underline-offset and text-decoration-thickness</short_desc>
          <delta_ts>2020-07-21 01:07:13 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=214470</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, InRadar, LayoutTestFailure</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1673033</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-20 05:53:45 -0700</bug_when>
    <thetext>We need to set underline position and thickness in font metrics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673034</commentid>
    <comment_count>1</comment_count>
      <attachid>404711</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-20 05:58:09 -0700</bug_when>
    <thetext>Created attachment 404711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673068</commentid>
    <comment_count>2</comment_count>
      <attachid>404711</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-20 07:36:58 -0700</bug_when>
    <thetext>Comment on attachment 404711
Patch

I&apos;m almost tempted to r+ this, but I think the comment below is important
enough to double check it before, so please take a look.

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

&gt; Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp:79
&gt; +    if (!determinant)

Is the intention here to check for zero exactly, or for some floating point
value that is small enough that is logically zero? In the latter case, this
looks like a footgun hiding in plain sight and it would be better to compare
“std::fabs(determinant) &lt; K” for a reasonable value of “K”, otherwise the
value of “determinant” can be almost-but-not zero and defeat the check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673072</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-20 07:42:07 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #2)
&gt; Comment on attachment 404711 [details]
&gt; Patch
&gt; 
&gt; I&apos;m almost tempted to r+ this, but I think the comment below is important
&gt; enough to double check it before, so please take a look.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=404711&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp:79
&gt; &gt; +    if (!determinant)
&gt; 
&gt; Is the intention here to check for zero exactly, or for some floating point
&gt; value that is small enough that is logically zero? In the latter case, this
&gt; looks like a footgun hiding in plain sight and it would be better to compare
&gt; “std::fabs(determinant) &lt; K” for a reasonable value of “K”, otherwise the
&gt; value of “determinant” can be almost-but-not zero and defeat the check.

Zero exactly. See the cairo code from which I took this:

https://cgit.freedesktop.org/cairo/tree/src/cairo-matrix.c#n685</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673075</commentid>
    <comment_count>4</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-07-20 07:51:53 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #3)
&gt; (In reply to Adrian Perez from comment #2)
&gt; &gt; Comment on attachment 404711 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; I&apos;m almost tempted to r+ this, but I think the comment below is important
&gt; &gt; enough to double check it before, so please take a look.
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=404711&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/freetype/SimpleFontDataFreeType.cpp:79
&gt; &gt; &gt; +    if (!determinant)
&gt; &gt; 
&gt; &gt; Is the intention here to check for zero exactly, or for some floating point
&gt; &gt; value that is small enough that is logically zero? In the latter case, this
&gt; &gt; looks like a footgun hiding in plain sight and it would be better to compare
&gt; &gt; “std::fabs(determinant) &lt; K” for a reasonable value of “K”, otherwise the
&gt; &gt; value of “determinant” can be almost-but-not zero and defeat the check.
&gt; 
&gt; Zero exactly. See the cairo code from which I took this:
&gt; 
&gt; https://cgit.freedesktop.org/cairo/tree/src/cairo-matrix.c#n685

Great, thanks for confirming that the intention is indeed to check
for zero exactly :]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673393</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-07-21 01:06:42 -0700</bug_when>
    <thetext>Committed r264646: &lt;https://trac.webkit.org/changeset/264646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1673394</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-21 01:07:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/65871255&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404711</attachid>
            <date>2020-07-20 05:58:09 -0700</date>
            <delta_ts>2020-07-20 07:52:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-ft-underline.diff</filename>
            <type>text/plain</type>
            <size>9126</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MzE0MGE4NTgzYWYuLjU1ZDc0OTUyMWIwNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTA3LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
KworICAgICAgICBbRnJlZVR5cGVdIEFkZCBzdXBwb3J0IGZvciB0ZXh0LXVuZGVybGluZS1vZmZz
ZXQgYW5kIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDU1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBleHBlY3RhdGlvbnMgZm9yIHRlc3RzIHRo
YXQgYXJlIG5vdyBwYXNzaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMjAtMDctMTkgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS11bV1BFXSBSZW1vdmUgc29tZSBkZXByZWNhdGVkIGV4cGVjdGF0aW9uIGZp
bGVzIGFuZCBnYXJkZW4gZmFpbHVyZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggYWM4NDIzOWUwOWJjLi5kMjcwY2E5ZTQ5ZTkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjQxLDkgKzEyNDEsNiBAQCB3ZWJr
aXQub3JnL2IvMjE0NDcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1i
YWNrZ3JvdW5kcy9iYWNrZ3JvdQogd2Via2l0Lm9yZy9iLzIxNDQ3MCBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtYmFja2dyb3VuZHMvYmFja2dyb3VuZC1yZXBlYXQvYmFj
a2dyb3VuZC1yZXBlYXQtcm91bmQueGh0IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3Jn
L2IvMjE0NDcwIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1iYWNrZ3Jv
dW5kcy9iYWNrZ3JvdW5kLXJlcGVhdC9iYWNrZ3JvdW5kLXJlcGVhdC1zcGFjZS54aHQgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8yMTQ0NzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLWJhY2tncm91bmRzL2JhY2tncm91bmQtc2l6ZS9iYWNrZ3JvdW5k
LXNpemUtY29udGFpbi54aHQgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLXdlYmtpdC5vcmcvYi8yMTQ0
NzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRleHQtZGVjb3IvdGV4
dC1kZWNvcmF0aW9uLXRoaWNrbmVzcy1mcm9tLWZvbnQtdmFyaWFibGUuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9jc3MtdGV4dC1kZWNvci90ZXh0LXVuZGVybGluZS1vZmZzZXQtdmFyaWFibGUu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQotd2Via2l0Lm9yZy9iLzIxNDQ3MCBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdGV4dC1kZWNvci90ZXh0LXVuZGVybGluZS1w
b3NpdGlvbi1mcm9tLWZvbnQtdmFyaWFibGUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Vi
a2l0Lm9yZy9iLzIxNDQ3MCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dmFsdWVzL2NoLXVuaXQtMDAyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIHdlYmtpdC5vcmcv
Yi8yMTQ0NzAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXZhbHVlcy9j
aC11bml0LTAxMS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMjE0NDcw
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1pbWFnZXMvaW1hZ2Utb3Jp
ZW50YXRpb24vaW1hZ2Utb3JpZW50YXRpb24tYm9yZGVyLWltYWdlLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxNzgxMzhhMGQ1MGMuLjljNDYwZTU2MGI5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTA3LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbRnJlZVR5cGVdIEFkZCBzdXBwb3J0IGZv
ciB0ZXh0LXVuZGVybGluZS1vZmZzZXQgYW5kIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDU1MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdldCB0aGUgdW5k
ZXJsaW5lIHBvc2l0aW9uIGFuZCB0aGlja25lc3MgZnJvbSB0aGUgZm9udCBpZiBpdCdzIHNjYWxh
YmxlIGFuZCBzZXQgdGhlbSBpbiBmb250IG1ldHJpY3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnNjYWxlZEZvbnRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpmb250VW5p
dHNQZXJFbSk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpwbGF0Zm9ybUluaXQpOgorCiAyMDIw
LTA3LTE5ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGZpeCBHVEsgYnVpbGQgaW4gRGViaWFuL0xUUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250
RGF0YUZyZWVUeXBlLmNwcAppbmRleCBmZDMzYzIwZmFiNmEuLmI3NzUwYzc5YjEzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9u
dERhdGFGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAKQEAgLTY2LDYgKzY2LDM3IEBAIHN0
YXRpYyBSZWZQdHI8Y2Fpcm9fc2NhbGVkX2ZvbnRfdD4gc2NhbGVkRm9udFdpdGhvdXRNZXRyaWNz
SGludGluZyhjYWlyb19zY2FsZWRfCiAgICAgcmV0dXJuIGFkb3B0UmVmKGNhaXJvX3NjYWxlZF9m
b250X2NyZWF0ZShjYWlyb19zY2FsZWRfZm9udF9nZXRfZm9udF9mYWNlKHNjYWxlZEZvbnQpLCAm
Zm9udE1hdHJpeCwgJmZvbnRDVE0sIGZvbnRPcHRpb25zLmdldCgpKSk7CiB9CiAKK3N0YXRpYyBm
bG9hdCBzY2FsZWRGb250U2NhbGVGYWN0b3IoY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9u
dCkKK3sKKyAgICBjYWlyb19tYXRyaXhfdCBmb250TWF0cml4OworICAgIGNhaXJvX3NjYWxlZF9m
b250X2dldF9mb250X21hdHJpeChzY2FsZWRGb250LCAmZm9udE1hdHJpeCk7CisKKyAgICBmbG9h
dCBkZXRlcm1pbmFudCA9IGZvbnRNYXRyaXgueHggKiBmb250TWF0cml4Lnl5IC0gZm9udE1hdHJp
eC55eCAqIGZvbnRNYXRyaXgueHk7CisgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGRldGVybWluYW50
KSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBkZXRlcm1pbmFudCA9IHN0ZDo6YWJzKGRldGVy
bWluYW50KTsKKyAgICBpZiAoIWRldGVybWluYW50KQorICAgICAgICByZXR1cm4gMDsKKworICAg
IGRvdWJsZSB4ID0gMTsKKyAgICBkb3VibGUgeSA9IDA7CisgICAgY2Fpcm9fbWF0cml4X3RyYW5z
Zm9ybV9kaXN0YW5jZSgmZm9udE1hdHJpeCwgJngsICZ5KTsKKyAgICBkb3VibGUgeFNjYWxlID0g
c3RkOjpoeXBvdCh4LCB5KTsKKyAgICByZXR1cm4geFNjYWxlID8gbmFycm93UHJlY2lzaW9uVG9G
bG9hdChkZXRlcm1pbmFudCAvIHhTY2FsZSkgOiAwLjsKK30KKworc3RhdGljIE9wdGlvbmFsPHVu
c2lnbmVkPiBmb250VW5pdHNQZXJFbShGVF9GYWNlIGZyZWVUeXBlRmFjZSkKK3sKKyAgICBpZiAo
ZnJlZVR5cGVGYWNlLT51bml0c19wZXJfRU0pCisgICAgICAgIHJldHVybiBmcmVlVHlwZUZhY2Ut
PnVuaXRzX3Blcl9FTTsKKworICAgIGlmIChhdXRvKiB0dEhlYWRlciA9IHN0YXRpY19jYXN0PFRU
X0hlYWRlcio+KEZUX0dldF9TZm50X1RhYmxlKGZyZWVUeXBlRmFjZSwgZnRfc2ZudF9oZWFkKSkp
CisgICAgICAgIHJldHVybiB0dEhlYWRlci0+VW5pdHNfUGVyX0VNOworCisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKwogdm9pZCBGb250OjpwbGF0Zm9ybUluaXQoKQogewogICAgIGlmICgh
bV9wbGF0Zm9ybURhdGEuc2l6ZSgpKQpAQCAtODQsMjQgKzExNSwzNSBAQCB2b2lkIEZvbnQ6OnBs
YXRmb3JtSW5pdCgpCiAgICAgZmxvYXQgY2FwSGVpZ2h0ID0gbmFycm93UHJlY2lzaW9uVG9GbG9h
dChmb250RXh0ZW50cy5oZWlnaHQpOwogICAgIGZsb2F0IGxpbmVHYXAgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KGZvbnRFeHRlbnRzLmhlaWdodCAtIGZvbnRFeHRlbnRzLmFzY2VudCAtIGZvbnRF
eHRlbnRzLmRlc2NlbnQpOwogICAgIE9wdGlvbmFsPGZsb2F0PiB4SGVpZ2h0OworICAgIE9wdGlv
bmFsPHVuc2lnbmVkPiB1bml0c1BlckVtOworICAgIE9wdGlvbmFsPGZsb2F0PiB1bmRlcmxpbmVQ
b3NpdGlvbjsKKyAgICBPcHRpb25hbDxmbG9hdD4gdW5kZXJsaW5lVGhpY2tuZXNzOwogCiAgICAg
ewogICAgICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWlyb0Z0RmFjZUxvY2tlcihtX3BsYXRmb3Jt
RGF0YS5zY2FsZWRGb250KCkpOworICAgICAgICBpZiAoRlRfRmFjZSBmcmVlVHlwZUZhY2UgPSBj
YWlyb0Z0RmFjZUxvY2tlci5mdEZhY2UoKSkgeworICAgICAgICAgICAgdW5pdHNQZXJFbSA9IGZv
bnRVbml0c1BlckVtKGZyZWVUeXBlRmFjZSk7CisKKyAgICAgICAgICAgIGlmIChmcmVlVHlwZUZh
Y2UtPmZhY2VfZmxhZ3MgJiBGVF9GQUNFX0ZMQUdfU0NBTEFCTEUpIHsKKyAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgVVNFX1RZUE9fTUVUUklDUyBmbGFnIGlzIHNldCBpbiB0aGUgT1MvMiB0YWJs
ZSB0aGVuIHdlIHVzZSB0eXBvIG1ldHJpY3MgaW5zdGVhZC4KKyAgICAgICAgICAgICAgICBpZiAo
YXV0byogT1MyVGFibGUgPSBzdGF0aWNfY2FzdDxUVF9PUzIqPihGVF9HZXRfU2ZudF9UYWJsZShm
cmVlVHlwZUZhY2UsIGZ0X3NmbnRfb3MyKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RlRfU2hvcnQga1VzZVR5cG9NZXRyaWNzTWFzayA9IDEgPDwgNzsKKyAgICAgICAgICAgICAgICAg
ICAgLy8gRlRfU2l6ZV9NZXRyaWNzOjp5X3NjYWxlIGlzIGluIDE2LjE2IGZpeGVkIHBvaW50IGZv
cm1hdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gSXRzIChmcmFjdGlvbmFsKSB2YWx1ZSBpcyBh
IGZhY3RvciB0aGF0IGNvbnZlcnRzIHZlcnRpY2FsIG1ldHJpY3MgZnJvbSBkZXNpZ24gdW5pdHMg
dG8gdW5pdHMgb2YgMS82NCBwaXhlbHMuCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB5c2Nh
bGUgPSAoZnJlZVR5cGVGYWNlLT5zaXplLT5tZXRyaWNzLnlfc2NhbGUgLyA2NTUzNi4wKSAvIDY0
LjA7CisgICAgICAgICAgICAgICAgICAgIGlmIChPUzJUYWJsZS0+ZnNTZWxlY3Rpb24gJiBrVXNl
VHlwb01ldHJpY3NNYXNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc2NlbnQgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2FsZSAqIE9TMlRhYmxlLT5zVHlwb0FzY2VuZGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc2NlbnQgPSAtbmFycm93UHJlY2lzaW9uVG9GbG9hdCh5
c2NhbGUgKiBPUzJUYWJsZS0+c1R5cG9EZXNjZW5kZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbGluZUdhcCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnNU
eXBvTGluZUdhcCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
eEhlaWdodCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnN4SGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgLy8gSWYgdGhlIFVTRV9UWVBPX01F
VFJJQ1MgZmxhZyBpcyBzZXQgaW4gdGhlIE9TLzIgdGFibGUgdGhlbiB3ZSB1c2UgdHlwbyBtZXRy
aWNzIGluc3RlYWQuCi0gICAgICAgIEZUX0ZhY2UgZnJlZVR5cGVGYWNlID0gY2Fpcm9GdEZhY2VM
b2NrZXIuZnRGYWNlKCk7Ci0gICAgICAgIGlmIChmcmVlVHlwZUZhY2UgJiYgZnJlZVR5cGVGYWNl
LT5mYWNlX2ZsYWdzICYgRlRfRkFDRV9GTEFHX1NDQUxBQkxFKSB7Ci0gICAgICAgICAgICBpZiAo
YXV0byogT1MyVGFibGUgPSBzdGF0aWNfY2FzdDxUVF9PUzIqPihGVF9HZXRfU2ZudF9UYWJsZShm
cmVlVHlwZUZhY2UsIGZ0X3NmbnRfb3MyKSkpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBGVF9T
aG9ydCBrVXNlVHlwb01ldHJpY3NNYXNrID0gMSA8PCA3OwotICAgICAgICAgICAgICAgIC8vIEZU
X1NpemVfTWV0cmljczo6eV9zY2FsZSBpcyBpbiAxNi4xNiBmaXhlZCBwb2ludCBmb3JtYXQuCi0g
ICAgICAgICAgICAgICAgLy8gSXRzIChmcmFjdGlvbmFsKSB2YWx1ZSBpcyBhIGZhY3RvciB0aGF0
IGNvbnZlcnRzIHZlcnRpY2FsIG1ldHJpY3MgZnJvbSBkZXNpZ24gdW5pdHMgdG8gdW5pdHMgb2Yg
MS82NCBwaXhlbHMuCi0gICAgICAgICAgICAgICAgZG91YmxlIHlzY2FsZSA9IChmcmVlVHlwZUZh
Y2UtPnNpemUtPm1ldHJpY3MueV9zY2FsZSAvIDY1NTM2LjApIC8gNjQuMDsKLSAgICAgICAgICAg
ICAgICBpZiAoT1MyVGFibGUtPmZzU2VsZWN0aW9uICYga1VzZVR5cG9NZXRyaWNzTWFzaykgewot
ICAgICAgICAgICAgICAgICAgICBhc2NlbnQgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2Fs
ZSAqIE9TMlRhYmxlLT5zVHlwb0FzY2VuZGVyKTsKLSAgICAgICAgICAgICAgICAgICAgZGVzY2Vu
dCA9IC1uYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHlzY2FsZSAqIE9TMlRhYmxlLT5zVHlwb0Rlc2Nl
bmRlcik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVHYXAgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHlzY2FsZSAqIE9TMlRhYmxlLT5zVHlwb0xpbmVHYXApOworICAgICAgICAgICAgICAgIGlm
ICh1bml0c1BlckVtKSB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0g
c2NhbGVkRm9udFNjYWxlRmFjdG9yKGZvbnRXaXRob3V0TWV0cmljc0hpbnRpbmcuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICB1bmRlcmxpbmVQb3NpdGlvbiA9IC0oKGZyZWVUeXBlRmFjZS0+
dW5kZXJsaW5lX3Bvc2l0aW9uICsgZnJlZVR5cGVGYWNlLT51bmRlcmxpbmVfdGhpY2tuZXNzIC8g
Mi4pIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHVuaXRzUGVyRW0udmFsdWUoKSkpICogc2NhbGVGYWN0
b3I7CisgICAgICAgICAgICAgICAgICAgIHVuZGVybGluZVRoaWNrbmVzcyA9IChmcmVlVHlwZUZh
Y2UtPnVuZGVybGluZV90aGlja25lc3MgLyBzdGF0aWNfY2FzdDxmbG9hdD4odW5pdHNQZXJFbS52
YWx1ZSgpKSkgKiBzY2FsZUZhY3RvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgeEhlaWdodCA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoeXNjYWxlICogT1MyVGFibGUtPnN4
SGVpZ2h0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTExOCwxNyArMTYw
LDE2IEBAIHZvaWQgRm9udDo6cGxhdGZvcm1Jbml0KCkKICAgICBtX2ZvbnRNZXRyaWNzLnNldExp
bmVTcGFjaW5nKGxyb3VuZGYoYXNjZW50KSArIGxyb3VuZGYoZGVzY2VudCkgKyBscm91bmRmKGxp
bmVHYXApKTsKICAgICBtX2ZvbnRNZXRyaWNzLnNldExpbmVHYXAobGluZUdhcCk7CiAgICAgbV9m
b250TWV0cmljcy5zZXRYSGVpZ2h0KHhIZWlnaHQudmFsdWUoKSk7CisgICAgaWYgKHVuaXRzUGVy
RW0pCisgICAgICAgIG1fZm9udE1ldHJpY3Muc2V0VW5pdHNQZXJFbSh1bml0c1BlckVtLnZhbHVl
KCkpOworICAgIGlmICh1bmRlcmxpbmVQb3NpdGlvbikKKyAgICAgICAgbV9mb250TWV0cmljcy5z
ZXRVbmRlcmxpbmVQb3NpdGlvbih1bmRlcmxpbmVQb3NpdGlvbi52YWx1ZSgpKTsKKyAgICBpZiAo
dW5kZXJsaW5lVGhpY2tuZXNzKQorICAgICAgICBtX2ZvbnRNZXRyaWNzLnNldFVuZGVybGluZVRo
aWNrbmVzcyh1bmRlcmxpbmVUaGlja25lc3MudmFsdWUoKSk7CiAKICAgICBjYWlyb190ZXh0X2V4
dGVudHNfdCB0ZXh0RXh0ZW50czsKICAgICBjYWlyb19zY2FsZWRfZm9udF90ZXh0X2V4dGVudHMo
bV9wbGF0Zm9ybURhdGEuc2NhbGVkRm9udCgpLCAiICIsICZ0ZXh0RXh0ZW50cyk7CiAgICAgbV9z
cGFjZVdpZHRoID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdCgocGxhdGZvcm1EYXRhKCkub3JpZW50
YXRpb24oKSA9PSBGb250T3JpZW50YXRpb246Okhvcml6b250YWwpID8gdGV4dEV4dGVudHMueF9h
ZHZhbmNlIDogLXRleHRFeHRlbnRzLnlfYWR2YW5jZSk7Ci0KLSAgICBpZiAoKHBsYXRmb3JtRGF0
YSgpLm9yaWVudGF0aW9uKCkgPT0gRm9udE9yaWVudGF0aW9uOjpWZXJ0aWNhbCkgJiYgIWlzVGV4
dE9yaWVudGF0aW9uRmFsbGJhY2soKSkgewotICAgICAgICBDYWlyb0Z0RmFjZUxvY2tlciBjYWly
b0Z0RmFjZUxvY2tlcihtX3BsYXRmb3JtRGF0YS5zY2FsZWRGb250KCkpOwotICAgICAgICBGVF9G
YWNlIGZyZWVUeXBlRmFjZSA9IGNhaXJvRnRGYWNlTG9ja2VyLmZ0RmFjZSgpOwotICAgICAgICBt
X2ZvbnRNZXRyaWNzLnNldFVuaXRzUGVyRW0oZnJlZVR5cGVGYWNlLT51bml0c19wZXJfRU0pOwot
ICAgIH0KLQogICAgIG1fc3ludGhldGljQm9sZE9mZnNldCA9IG1fcGxhdGZvcm1EYXRhLnN5bnRo
ZXRpY0JvbGQoKSA/IDEuMGYgOiAwLmY7CiAKICAgICBGY0NoYXI4KiBmb250Q29uZmlnRmFtaWx5
TmFtZTsK
</data>
<flag name="review"
          id="420089"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>