<?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>25605</bug_id>
          
          <creation_ts>2009-05-06 22:04:40 -0700</creation_ts>
          <short_desc>Reduce the size of GlyphPage</short_desc>
          <delta_ts>2009-05-07 14:11:09 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>mitz</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>120221</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-06 22:04:40 -0700</bug_when>
    <thetext>GlyphPage wastes a lot of space with padding, because it has a 256-size array of GlyphData, which is { unsigned short, pointer }. In 64-bit, that&apos;s 6 bytes of padding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120222</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-06 22:06:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/6864062&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120223</commentid>
    <comment_count>2</comment_count>
      <attachid>30086</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-06 22:12:12 -0700</bug_when>
    <thetext>Created attachment 30086
Patch, changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120288</commentid>
    <comment_count>3</comment_count>
      <attachid>30086</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-05-07 10:02:31 -0700</bug_when>
    <thetext>Comment on attachment 30086
Patch, changelog

How did you test the performance impact of this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120293</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-07 10:41:23 -0700</bug_when>
    <thetext>I&apos;m going to run PLTs today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120324</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-07 12:56:12 -0700</bug_when>
    <thetext>PLTs show this is a small perf gain (0.25%).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120338</commentid>
    <comment_count>6</comment_count>
      <attachid>30086</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-05-07 13:54:25 -0700</bug_when>
    <thetext>Comment on attachment 30086
Patch, changelog

&gt; +    GlyphData()
&gt; +        : glyph(0)
&gt; +        , fontData(0)
&gt; +    {
&gt; +    }
&gt; +    GlyphData(Glyph g, const SimpleFontData* f)
&gt; +        : glyph(g)
&gt; +        , fontData(f)
&gt; +    {
&gt; +    }

Could just write the above as one constructor with default arguments:

    GlyphData(Glyph g = 0, const SimpleFontData* f = 0)

instead.

&gt; +        memcpy(m_glyphs, other.m_glyphs, GlyphPage::size * sizeof(m_glyphs[0]));
&gt; +        memcpy(m_glyphFontData, other.m_glyphFontData, GlyphPage::size * sizeof(m_glyphFontData[0]));

This is in a member of GlyphPage, so you can omit the GlyphPage:: from the use of size. In fact, you should just use sizeof(m_glyphs) and sizeof(m_glyphFontData).

&gt; +        memset(m_glyphs, 0, GlyphPage::size * sizeof(m_glyphs[0]));
&gt; +        memset(m_glyphFontData, 0, GlyphPage::size * sizeof(m_glyphFontData[0]));

Ditto.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120341</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-05-07 14:11:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/43364</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30086</attachid>
            <date>2009-05-06 22:12:12 -0700</date>
            <delta_ts>2009-05-07 13:54:25 -0700</delta_ts>
            <desc>Patch, changelog</desc>
            <filename>25605_patch.txt</filename>
            <type>text/plain</type>
            <size>12362</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmRhMjJlMy4uMWQwZDNlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0wNS0wNiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82ODY0MDYyPiBTaHJp
bmsgR2x5cGhQYWdlIGZyb20gNDExMiB0byAyNTc2IGJ5dGVzIGluIDY0LWJpdAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MDUKKworICAgICAgICBT
aHJpbmsgR2x5cGhQYWdlIGJ5IHNwbGl0dGluZyB0aGUgYXJyYXkgb2YgR2x5cGhEYXRhLCB3aGlj
aCBoYXMgbG90cworICAgICAgICBvZiBwYWRkaW5nLCBpbnRvIHNlcGFyYXRlIEdseXBoIGFuZCBT
aW1wbGVGb250RGF0YSogYXJyYXlzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dC5oOgorICAgICAgICBnbHlwaERhdGFGb3JDaGFyYWN0ZXIgaGFzIHRvIHJldHVybiBhIEdseXBo
RGF0YSBieSB2YWx1ZSBub3cuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRGYXN0UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpnbHlwaERhdGFGb3JD
aGFyYWN0ZXIpOgorICAgICAgICBSZXR1cm4gR2x5cGhEYXRhIGJ5IHZhbHVlLgorICAgICAgICAK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVlTm9kZTo6aW5pdGlhbGl6ZVBhZ2UpOgorICAgICAg
ICBCZXR0ZXIgZW5jYXBzdWxhdGlvbiBvZiBHbHlwaFBhZ2UsIHVzaW5nIHRoZSBuZXcgbWV0aG9k
cy4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5v
ZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoRGF0YTo6R2x5cGhEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkdseXBoUGFnZTo6aW5kZXhGb3JDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6R2x5cGhQYWdlOjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
R2x5cGhQYWdlOjpnbHlwaERhdGFGb3JJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBh
Z2U6OmdseXBoQXQpOgorICAgICAgICAoV2ViQ29yZTo6R2x5cGhQYWdlOjpmb250RGF0YUZvckNo
YXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2U6OnNldEdseXBoRGF0YUZvckNo
YXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2U6OnNldEdseXBoRGF0YUZvcklu
ZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkdseXBoUGFnZTo6Y29weUZyb20pOgorICAgICAgICAo
V2ViQ29yZTo6R2x5cGhQYWdlOjpjbGVhcik6CisKIDIwMDktMDUtMDYgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIgYW5k
IEp1c3RpbiBHYXJjaWEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4IGViNjAxNDQuLmQz
NzNmM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIGNvbnN0IEZvbnREYXRhKiBmb250RGF0YUF0KHVuc2lnbmVkKSBj
b25zdDsKLSAgICBjb25zdCBHbHlwaERhdGEmIGdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hhcjMy
LCBib29sIG1pcnJvciwgYm9vbCBmb3JjZVNtYWxsQ2FwcyA9IGZhbHNlKSBjb25zdDsKKyAgICBH
bHlwaERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIsIGJvb2wgbWlycm9yLCBib29s
IGZvcmNlU21hbGxDYXBzID0gZmFsc2UpIGNvbnN0OwogICAgIC8vIFVzZWQgZm9yIGNvbXBsZXgg
dGV4dCwgYW5kIGRvZXMgbm90IHV0aWxpemUgdGhlIGdseXBoIG1hcCBjYWNoZS4KICAgICBjb25z
dCBGb250RGF0YSogZm9udERhdGFGb3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0
aCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZh
c3RQYXRoLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhc3RQYXRoLmNwcApp
bmRleCAwZTBmMTgxLi5iYzk4ZTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRGYXN0UGF0aC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250
RmFzdFBhdGguY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNvbnN0IEdseXBoRGF0YSYgRm9udDo6Z2x5cGhEYXRh
Rm9yQ2hhcmFjdGVyKFVDaGFyMzIgYywgYm9vbCBtaXJyb3IsIGJvb2wgZm9yY2VTbWFsbENhcHMp
IGNvbnN0CitHbHlwaERhdGEgRm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYywg
Ym9vbCBtaXJyb3IsIGJvb2wgZm9yY2VTbWFsbENhcHMpIGNvbnN0CiB7CiAgICAgYm9vbCB1c2VT
bWFsbENhcHNGb250ID0gZm9yY2VTbWFsbENhcHM7CiAgICAgaWYgKG1fZm9udERlc2NyaXB0aW9u
LnNtYWxsQ2FwcygpKSB7CkBAIC03MCw3ICs3MCw3IEBAIGNvbnN0IEdseXBoRGF0YSYgRm9udDo6
Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYywgYm9vbCBtaXJyb3IsIGJvb2wgZm9yY2VT
CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBwYWdlID0gbm9kZS0+cGFnZSgp
OwogICAgICAgICAgICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBHbHlwaERh
dGEmIGRhdGEgPSBwYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisgICAgICAgICAgICAg
ICAgR2x5cGhEYXRhIGRhdGEgPSBwYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CiAgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuZm9udERhdGEpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBkYXRhOwogICAgICAgICAgICAgICAgIGlmIChub2RlLT5pc1N5c3RlbUZhbGxiYWNrKCkpCkBA
IC04OCw3ICs4OCw3IEBAIGNvbnN0IEdseXBoRGF0YSYgRm9udDo6Z2x5cGhEYXRhRm9yQ2hhcmFj
dGVyKFVDaGFyMzIgYywgYm9vbCBtaXJyb3IsIGJvb2wgZm9yY2VTCiAgICAgICAgIHdoaWxlICh0
cnVlKSB7CiAgICAgICAgICAgICBwYWdlID0gbm9kZS0+cGFnZSgpOwogICAgICAgICAgICAgaWYg
KHBhZ2UpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBHbHlwaERhdGEmIGRhdGEgPSBwYWdlLT5n
bHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CisgICAgICAgICAgICAgICAgR2x5cGhEYXRhIGRhdGEg
PSBwYWdlLT5nbHlwaERhdGFGb3JDaGFyYWN0ZXIoYyk7CiAgICAgICAgICAgICAgICAgaWYgKGRh
dGEuZm9udERhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHNtYWxsQ2Fwc0ZvbnRE
YXRhIGZ1bmN0aW9uIHNob3VsZCBub3Qgbm9ybWFsbHkgcmV0dXJuIDAuCiAgICAgICAgICAgICAg
ICAgICAgIC8vIEJ1dCBpZiBpdCBkb2VzLCB3ZSB3aWxsIGp1c3QgcmVuZGVyIHRoZSBjYXBpdGFs
IGxldHRlciBiaWcuCkBAIC05OSw3ICs5OSw3IEBAIGNvbnN0IEdseXBoRGF0YSYgRm9udDo6Z2x5
cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYywgYm9vbCBtaXJyb3IsIGJvb2wgZm9yY2VTCiAg
ICAgICAgICAgICAgICAgICAgIEdseXBoUGFnZVRyZWVOb2RlKiBzbWFsbENhcHNOb2RlID0gR2x5
cGhQYWdlVHJlZU5vZGU6OmdldFJvb3RDaGlsZChzbWFsbENhcHNGb250RGF0YSwgcGFnZU51bWJl
cik7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoUGFnZSogc21hbGxDYXBzUGFnZSA9
IHNtYWxsQ2Fwc05vZGUtPnBhZ2UoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHNtYWxsQ2Fw
c1BhZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoRGF0YSYgZGF0YSA9
IHNtYWxsQ2Fwc1BhZ2UtPmdseXBoRGF0YUZvckNoYXJhY3RlcihjKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdseXBoRGF0YSBkYXRhID0gc21hbGxDYXBzUGFnZS0+Z2x5cGhEYXRhRm9yQ2hh
cmFjdGVyKGMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuZm9udERhdGEpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgICAgICAgICAgICAg
ICAgIH0KQEAgLTE1MCw3ICsxNTAsNyBAQCBjb25zdCBHbHlwaERhdGEmIEZvbnQ6OmdseXBoRGF0
YUZvckNoYXJhY3RlcihVQ2hhcjMyIGMsIGJvb2wgbWlycm9yLCBib29sIGZvcmNlUwogICAgIGlm
IChjaGFyYWN0ZXJGb250RGF0YSkgewogICAgICAgICAvLyBHb3QgdGhlIGZhbGxiYWNrIGdseXBo
IGFuZCBmb250LgogICAgICAgICBHbHlwaFBhZ2UqIGZhbGxiYWNrUGFnZSA9IEdseXBoUGFnZVRy
ZWVOb2RlOjpnZXRSb290Q2hpbGQoY2hhcmFjdGVyRm9udERhdGEsIHBhZ2VOdW1iZXIpLT5wYWdl
KCk7Ci0gICAgICAgIGNvbnN0IEdseXBoRGF0YSYgZGF0YSA9IGZhbGxiYWNrUGFnZSAmJiBmYWxs
YmFja1BhZ2UtPmdseXBoRGF0YUZvckNoYXJhY3RlcihjKS5mb250RGF0YSA/IGZhbGxiYWNrUGFn
ZS0+Z2x5cGhEYXRhRm9yQ2hhcmFjdGVyKGMpIDogY2hhcmFjdGVyRm9udERhdGEtPm1pc3NpbmdH
bHlwaERhdGEoKTsKKyAgICAgICAgR2x5cGhEYXRhIGRhdGEgPSBmYWxsYmFja1BhZ2UgJiYgZmFs
bGJhY2tQYWdlLT5mb250RGF0YUZvckNoYXJhY3RlcihjKSA/IGZhbGxiYWNrUGFnZS0+Z2x5cGhE
YXRhRm9yQ2hhcmFjdGVyKGMpIDogY2hhcmFjdGVyRm9udERhdGEtPm1pc3NpbmdHbHlwaERhdGEo
KTsKICAgICAgICAgLy8gQ2FjaGUgaXQgc28gd2UgZG9uJ3QgaGF2ZSB0byBkbyBzeXN0ZW0gZmFs
bGJhY2sgYWdhaW4gbmV4dCB0aW1lLgogICAgICAgICBpZiAoIXVzZVNtYWxsQ2Fwc0ZvbnQpCiAg
ICAgICAgICAgICBwYWdlLT5zZXRHbHlwaERhdGFGb3JDaGFyYWN0ZXIoYywgZGF0YS5nbHlwaCwg
ZGF0YS5mb250RGF0YSk7CkBAIC0xNTksNyArMTU5LDcgQEAgY29uc3QgR2x5cGhEYXRhJiBGb250
OjpnbHlwaERhdGFGb3JDaGFyYWN0ZXIoVUNoYXIzMiBjLCBib29sIG1pcnJvciwgYm9vbCBmb3Jj
ZVMKIAogICAgIC8vIEV2ZW4gc3lzdGVtIGZhbGxiYWNrIGNhbiBmYWlsOyB1c2UgdGhlIG1pc3Np
bmcgZ2x5cGggaW4gdGhhdCBjYXNlLgogICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlciB0
byB1c2UgdGhlIG1pc3NpbmcgZ2x5cGggZnJvbSB0aGUgbGFzdCByZXNvcnQgZm9udCBpbnN0ZWFk
LgotICAgIGNvbnN0IEdseXBoRGF0YSYgZGF0YSA9IHByaW1hcnlGb250KCktPm1pc3NpbmdHbHlw
aERhdGEoKTsKKyAgICBHbHlwaERhdGEgZGF0YSA9IHByaW1hcnlGb250KCktPm1pc3NpbmdHbHlw
aERhdGEoKTsKICAgICBpZiAoIXVzZVNtYWxsQ2Fwc0ZvbnQpCiAgICAgICAgIHBhZ2UtPnNldEds
eXBoRGF0YUZvckNoYXJhY3RlcihjLCBkYXRhLmdseXBoLCBkYXRhLmZvbnREYXRhKTsKICAgICBy
ZXR1cm4gZGF0YTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQ
YWdlVHJlZU5vZGUuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVl
Tm9kZS5jcHAKaW5kZXggYmQ4MzhkZS4uYTM0YTE5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKQEAgLTIyMCw4ICsyMjAsOCBAQCB2b2lk
IEdseXBoUGFnZVRyZWVOb2RlOjppbml0aWFsaXplUGFnZShjb25zdCBGb250RGF0YSogZm9udERh
dGEsIHVuc2lnbmVkIHBhZ2VOdQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmF0Y2hQ
YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHRvIDw9ICBzdGF0aWNf
Y2FzdDxpbnQ+KEdseXBoUGFnZTo6c2l6ZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IGogPSBmcm9tOyBqIDwgdG87IGorKykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIW1fcGFnZS0+bV9nbHlwaHNbal0uZ2x5cGggJiYgcGFnZVRvRmlsbC0+
bV9nbHlwaHNbal0uZ2x5cGgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhZ2UtPm1fZ2x5cGhzW2pdID0gcGFnZVRvRmlsbC0+bV9nbHlwaHNbal07CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9wYWdlLT5nbHlwaEF0KGopICYmIHBhZ2VUb0Zp
bGwtPmdseXBoQXQoaikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Bh
Z2UtPnNldEdseXBoRGF0YUZvckluZGV4KGosIHBhZ2VUb0ZpbGwtPmdseXBoRGF0YUZvckluZGV4
KGopKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI2NSwxNSArMjY1LDEzIEBAIHZvaWQg
R2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxpemVQYWdlKGNvbnN0IEZvbnREYXRhKiBmb250RGF0
YSwgdW5zaWduZWQgcGFnZU51CiAgICAgICAgICAgICAgICAgLy8gaGFzIGFkZGVkIGFueXRoaW5n
LgogICAgICAgICAgICAgICAgIGJvb2wgbmV3R2x5cGhzID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEdseXBoUGFnZTo6c2l6ZTsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChwYXJlbnRQYWdlLT5tX2dseXBoc1tpXS5nbHlwaCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+bV9nbHlwaHNbaV0gPSBwYXJlbnRQYWdlLT5tX2ds
eXBoc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSAgaWYgKGZhbGxiYWNrUGFnZS0+bV9n
bHlwaHNbaV0uZ2x5cGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+bV9nbHlw
aHNbaV0gPSBmYWxsYmFja1BhZ2UtPm1fZ2x5cGhzW2ldOworICAgICAgICAgICAgICAgICAgICBp
ZiAocGFyZW50UGFnZS0+Z2x5cGhBdChpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFn
ZS0+c2V0R2x5cGhEYXRhRm9ySW5kZXgoaSwgcGFyZW50UGFnZS0+Z2x5cGhEYXRhRm9ySW5kZXgo
aSkpOworICAgICAgICAgICAgICAgICAgICBlbHNlICBpZiAoZmFsbGJhY2tQYWdlLT5nbHlwaEF0
KGkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNldEdseXBoRGF0YUZvcklu
ZGV4KGksIGZhbGxiYWNrUGFnZS0+Z2x5cGhEYXRhRm9ySW5kZXgoaSkpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3R2x5cGhzID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoRGF0YSBkYXRhID0geyAwLCAw
IH07Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPm1fZ2x5cGhzW2ldID0gZGF0YTsK
LSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2V0R2x5cGhEYXRhRm9ySW5kZXgoaSwgMCwgMCk7
CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKCFuZXdHbHlwaHMpCkBA
IC0yODgsMTIgKzI4Niw5IEBAIHZvaWQgR2x5cGhQYWdlVHJlZU5vZGU6OmluaXRpYWxpemVQYWdl
KGNvbnN0IEZvbnREYXRhKiBmb250RGF0YSwgdW5zaWduZWQgcGFnZU51CiAgICAgICAgIC8vIGV2
ZXIgZmluZHMgaXQgbmVlZHMgYSBnbHlwaCBvdXQgb2YgdGhlIHN5c3RlbSBmYWxsYmFjayBwYWdl
LCBpdCB3aWxsCiAgICAgICAgIC8vIGFzayB0aGUgc3lzdGVtIGZvciB0aGUgYmVzdCBmb250IHRv
IHVzZSBhbmQgZmlsbCB0aGF0IGdseXBoIGluIGZvciB1cy4KICAgICAgICAgaWYgKHBhcmVudFBh
Z2UpCi0gICAgICAgICAgICBtZW1jcHkobV9wYWdlLT5tX2dseXBocywgcGFyZW50UGFnZS0+bV9n
bHlwaHMsIEdseXBoUGFnZTo6c2l6ZSAqIHNpemVvZihtX3BhZ2UtPm1fZ2x5cGhzWzBdKSk7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29uc3QgR2x5cGhEYXRhIGRhdGEgPSB7IDAsIDAg
fTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBHbHlwaFBhZ2U6OnNpemU7
IGkrKykKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPm1fZ2x5cGhzW2ldID0gZGF0YTsKLSAgICAg
ICAgfQorICAgICAgICAgICAgbV9wYWdlLT5jb3B5RnJvbSgqcGFyZW50UGFnZSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1fcGFnZS0+Y2xlYXIoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuaAppbmRleCAyNDBiNDkyLi40
MGQyNThmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRy
ZWVOb2RlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9k
ZS5oCkBAIC00NSw2ICs0NSwxNiBAQCB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IEdseXBoOwogLy8g
SG9sZHMgdGhlIGdseXBoIGluZGV4IGFuZCB0aGUgY29ycmVzcG9uZGluZyBTaW1wbGVGb250RGF0
YSBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbgogLy8gY2hhcmFjdGVyLgogc3RydWN0IEdseXBoRGF0
YSB7CisgICAgR2x5cGhEYXRhKCkKKyAgICAgICAgOiBnbHlwaCgwKQorICAgICAgICAsIGZvbnRE
YXRhKDApCisgICAgeworICAgIH0KKyAgICBHbHlwaERhdGEoR2x5cGggZywgY29uc3QgU2ltcGxl
Rm9udERhdGEqIGYpCisgICAgICAgIDogZ2x5cGgoZykKKyAgICAgICAgLCBmb250RGF0YShmKQor
ICAgIHsKKyAgICB9CiAgICAgR2x5cGggZ2x5cGg7CiAgICAgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnREYXRhOwogfTsKQEAgLTU0LDMwICs2NCw2OSBAQCBzdHJ1Y3QgR2x5cGhEYXRhIHsKIC8v
IHN0YXJ0aW5nIGZyb20gMCBhbmQgaW5jcmVtZW50aW5nIGZvciBlYWNoIDI1NiBnbHlwaHMuCiAv
LwogLy8gT25lIHBhZ2UgbWF5IGFjdHVhbGx5IGluY2x1ZGUgZ2x5cGhzIGZyb20gb3RoZXIgZm9u
dHMgaWYgdGhlIGNoYXJhY3RlcnMgYXJlCi0vLyBtaXNzaW5nIGluIHRoZSBwYXJpbWFyeSBmb250
LiBJdCBpcyBvd25lZCBieSBleGFjdGx5IG9uZSBHbHlwaFBhZ2VUcmVlTm9kZSwKKy8vIG1pc3Np
bmcgaW4gdGhlIHByaW1hcnkgZm9udC4gSXQgaXMgb3duZWQgYnkgZXhhY3RseSBvbmUgR2x5cGhQ
YWdlVHJlZU5vZGUsCiAvLyBhbHRob3VnaCBtdWx0aXBsZSBub2RlcyBtYXkgcmVmZXJlbmNlIGl0
IGFzIHRoZWlyICJwYWdlIiBpZiB0aGV5IGFyZSBzdXBwb3NlZAogLy8gdG8gYmUgb3ZlcnJpZGlu
ZyB0aGUgcGFyZW50J3Mgbm9kZSwgYnV0IHByb3ZpZGUgbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlv
bi4KLXN0cnVjdCBHbHlwaFBhZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxHbHlwaFBhZ2U+IHsKK2Ns
YXNzIEdseXBoUGFnZSA6IHB1YmxpYyBSZWZDb3VudGVkPEdseXBoUGFnZT4geworcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdseXBoUGFnZT4gY3JlYXRlKEdseXBoUGFnZVRyZWVOb2Rl
KiBvd25lcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2x5cGhQYWdlKG93
bmVyKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMjU2OyAvLyBD
b3ZlcnMgTGF0aW4tMSBpbiBhIHNpbmdsZSBwYWdlLgotICAgIEdseXBoRGF0YSBtX2dseXBoc1tz
aXplXTsKLSAgICBHbHlwaFBhZ2VUcmVlTm9kZSogbV9vd25lcjsKIAotICAgIGNvbnN0IEdseXBo
RGF0YSYgZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKFVDaGFyMzIgYykgY29uc3QgeyByZXR1cm4gbV9n
bHlwaHNbYyAlIHNpemVdOyB9CisgICAgdW5zaWduZWQgaW5kZXhGb3JDaGFyYWN0ZXIoVUNoYXIz
MiBjKSBjb25zdCB7IHJldHVybiBjICUgc2l6ZTsgfQorICAgIEdseXBoRGF0YSBnbHlwaERhdGFG
b3JDaGFyYWN0ZXIoVUNoYXIzMiBjKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBpbmRleEZvckNoYXJhY3RlcihjKTsKKyAgICAgICAgcmV0dXJuIEdseXBoRGF0YShtX2ds
eXBoc1tpbmRleF0sIG1fZ2x5cGhGb250RGF0YVtpbmRleF0pOworICAgIH0KKworICAgIEdseXBo
RGF0YSBnbHlwaERhdGFGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpbmRleCA8IHNpemUpOworICAgICAgICByZXR1cm4gR2x5cGhEYXRhKG1fZ2x5
cGhzW2luZGV4XSwgbV9nbHlwaEZvbnREYXRhW2luZGV4XSk7CisgICAgfQorCisgICAgR2x5cGgg
Z2x5cGhBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRl
eCA8IHNpemUpOworICAgICAgICByZXR1cm4gbV9nbHlwaHNbaW5kZXhdOworICAgIH0KKworICAg
IGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YUZvckNoYXJhY3RlcihVQ2hhcjMyIGMpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9nbHlwaEZvbnREYXRhW2luZGV4Rm9yQ2hhcmFj
dGVyKGMpXTsKKyAgICB9CisKICAgICB2b2lkIHNldEdseXBoRGF0YUZvckNoYXJhY3RlcihVQ2hh
cjMyIGMsIEdseXBoIGcsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmKQogICAgIHsKLSAgICAgICAg
c2V0R2x5cGhEYXRhRm9ySW5kZXgoYyAlIHNpemUsIGcsIGYpOworICAgICAgICBzZXRHbHlwaERh
dGFGb3JJbmRleChpbmRleEZvckNoYXJhY3RlcihjKSwgZywgZik7CiAgICAgfQogICAgIHZvaWQg
c2V0R2x5cGhEYXRhRm9ySW5kZXgodW5zaWduZWQgaW5kZXgsIEdseXBoIGcsIGNvbnN0IFNpbXBs
ZUZvbnREYXRhKiBmKQogICAgIHsKICAgICAgICAgQVNTRVJUKGluZGV4IDwgc2l6ZSk7Ci0gICAg
ICAgIG1fZ2x5cGhzW2luZGV4XS5nbHlwaCA9IGc7Ci0gICAgICAgIG1fZ2x5cGhzW2luZGV4XS5m
b250RGF0YSA9IGY7CisgICAgICAgIG1fZ2x5cGhzW2luZGV4XSA9IGc7CisgICAgICAgIG1fZ2x5
cGhGb250RGF0YVtpbmRleF0gPSBmOworICAgIH0KKyAgICB2b2lkIHNldEdseXBoRGF0YUZvcklu
ZGV4KHVuc2lnbmVkIGluZGV4LCBjb25zdCBHbHlwaERhdGEmIGdseXBoRGF0YSkKKyAgICB7Cisg
ICAgICAgIHNldEdseXBoRGF0YUZvckluZGV4KGluZGV4LCBnbHlwaERhdGEuZ2x5cGgsIGdseXBo
RGF0YS5mb250RGF0YSk7CiAgICAgfQorICAgIAorICAgIHZvaWQgY29weUZyb20oY29uc3QgR2x5
cGhQYWdlJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1lbWNweShtX2dseXBocywgb3RoZXIubV9n
bHlwaHMsIEdseXBoUGFnZTo6c2l6ZSAqIHNpemVvZihtX2dseXBoc1swXSkpOworICAgICAgICBt
ZW1jcHkobV9nbHlwaEZvbnREYXRhLCBvdGhlci5tX2dseXBoRm9udERhdGEsIEdseXBoUGFnZTo6
c2l6ZSAqIHNpemVvZihtX2dseXBoRm9udERhdGFbMF0pKTsKKyAgICB9CisKKyAgICB2b2lkIGNs
ZWFyKCkKKyAgICB7CisgICAgICAgIG1lbXNldChtX2dseXBocywgMCwgR2x5cGhQYWdlOjpzaXpl
ICogc2l6ZW9mKG1fZ2x5cGhzWzBdKSk7CisgICAgICAgIG1lbXNldChtX2dseXBoRm9udERhdGEs
IDAsIEdseXBoUGFnZTo6c2l6ZSAqIHNpemVvZihtX2dseXBoRm9udERhdGFbMF0pKTsKKyAgICB9
CisgICAgCiAgICAgR2x5cGhQYWdlVHJlZU5vZGUqIG93bmVyKCkgY29uc3QgeyByZXR1cm4gbV9v
d25lcjsgfQogCiAgICAgLy8gSW1wbGVtZW50ZWQgYnkgdGhlIHBsYXRmb3JtLgpAQCAtODgsNiAr
MTM3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIDogbV9vd25lcihvd25lcikKICAgICB7CiAgICAg
fQorCisgICAgLy8gU2VwYXJhdGUgYXJyYXlzLCByYXRoZXIgdGhhbiBhcnJheSBvZiBHbHlwaERh
dGEsIHRvIHNhdmUgc3BhY2UuCisgICAgR2x5cGggbV9nbHlwaHNbc2l6ZV07CisgICAgY29uc3Qg
U2ltcGxlRm9udERhdGEqIG1fZ2x5cGhGb250RGF0YVtzaXplXTsKKworICAgIEdseXBoUGFnZVRy
ZWVOb2RlKiBtX293bmVyOwogfTsKIAogLy8gVGhlIGdseXBoIHBhZ2UgdHJlZSBpcyBhIGRhdGEg
c3RydWN0dXJlIHRoYXQgbWFwcyAoRm9udERhdGEsIGdseXBoIHBhZ2UgbnVtYmVyKQo=
</data>
<flag name="review"
          id="15103"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>