<?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>79195</bug_id>
          
          <creation_ts>2012-02-21 22:14:48 -0800</creation_ts>
          <short_desc>Cache &lt;font face&gt; family lists in CSSValuePool.</short_desc>
          <delta_ts>2012-02-21 23:33:36 -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>CSS</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>78070</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561613</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-21 22:14:48 -0800</bug_when>
    <thetext>Legacy content is typically quite heavy on &lt;font face&gt;. Parsing the face attribute to create a list of families is very expensive. We should cache the results of parsing a given attribute value to minimize time spent here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561619</commentid>
    <comment_count>1</comment_count>
      <attachid>128130</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-21 22:29:02 -0800</bug_when>
    <thetext>Created attachment 128130
Semidecent patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561630</commentid>
    <comment_count>2</comment_count>
      <attachid>128130</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-02-21 22:41:15 -0800</bug_when>
    <thetext>Comment on attachment 128130
Semidecent patch

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

r=me with a mechanism to prevent unlimited pool growth in weird cases.

&gt; Source/WebCore/ChangeLog:10
&gt; +        HTMLFontElements with &quot;face&quot; attributes are very common in legacy web content.
&gt; +        Add a String-&gt;CSSValue cache for these in CSSValuePool and use it to avoid
&gt; +        reparsing and recreating duplicate font face values.

A word about performance results might be good.

&gt; Source/WebCore/css/CSSValuePool.cpp:140
&gt; +PassRefPtr&lt;CSSValueList&gt; CSSValuePool::createFontFaceValue(const AtomicString&amp; string, CSSStyleSheet* contextStyleSheet)
&gt; +{
&gt; +    RefPtr&lt;CSSValueList&gt;&amp; value = m_fontFaceValueCache.add(string, 0).first-&gt;second;
&gt; +    if (!value)
&gt; +        value = CSSParser::parseFontFaceValue(string, contextStyleSheet);
&gt; +    return value;
&gt; +}

There should be a mechanism to prevent boundless growth in case this gets hits repeatedly with different values. Something similar to what color value pool has should work fine.

&gt; Source/WebCore/css/CSSValuePool.h:81
&gt;      IntegerValueCache m_percentValueCache;
&gt;      IntegerValueCache m_numberValueCache;
&gt;  
&gt; +    typedef HashMap&lt;AtomicString, RefPtr&lt;CSSValueList&gt; &gt; FontFaceValueCache;
&gt; +    FontFaceValueCache m_fontFaceValueCache;

It would be nice to renames all these Caches to Pools at some point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561668</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-02-21 23:33:36 -0800</bug_when>
    <thetext>Committed r108451: &lt;http://trac.webkit.org/changeset/108451&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128130</attachid>
            <date>2012-02-21 22:29:02 -0800</date>
            <delta_ts>2012-02-21 22:41:15 -0800</delta_ts>
            <desc>Semidecent patch</desc>
            <filename>bug-79195.diff</filename>
            <type>text/plain</type>
            <size>6413</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNTU5NzNlLi43ZmZjMGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTItMDItMjEgIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIENhY2hlIDxmb250IGZhY2U+IGZhbWlseSBsaXN0cyBpbiBDU1NWYWx1ZVBvb2wu
CisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc5MTk1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhUTUxGb250RWxlbWVudHMgd2l0aCAiZmFj
ZSIgYXR0cmlidXRlcyBhcmUgdmVyeSBjb21tb24gaW4gbGVnYWN5IHdlYiBjb250ZW50LgorICAg
ICAgICBBZGQgYSBTdHJpbmctPkNTU1ZhbHVlIGNhY2hlIGZvciB0aGVzZSBpbiBDU1NWYWx1ZVBv
b2wgYW5kIHVzZSBpdCB0byBhdm9pZAorICAgICAgICByZXBhcnNpbmcgYW5kIHJlY3JlYXRpbmcg
ZHVwbGljYXRlIGZvbnQgZmFjZSB2YWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGb250RmFjZVZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgICogY3NzL0NTU1ZhbHVlUG9vbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZVBvb2w6OmNyZWF0ZUZvbnRGYWNlVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZVBvb2wuaDoKKyAgICAgICAgKiBodG1sL0hUTUxGb250RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRm9udEVsZW1lbnQ6OmNvbGxlY3RTdHls
ZUZvckF0dHJpYnV0ZSk6CisKIDIwMTItMDItMjEgIEx1a2UgTWFjcGhlcnNvbiAgIDxtYWNwaGVy
c29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgbWFueSBpbnN0YW5jZXMgb2Yg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSBpbiBDU1NTdHlsZUFwcGx5
UHJvcGVydHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDlmOGJjOTMuLjAzZjkxYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC00ODUsNiArNDg1LDE0IEBAIHN0YXRpYyBi
b29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24s
IGludCBwcm9wZXJ0eUlkCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1Bhc3NSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmluZywgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCit7CisgICAgUmVmUHRy
PFN0eWxlUHJvcGVydHlTZXQ+IGR1bW15U3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
KTsKKyAgICBpZiAoIXBhcnNlVmFsdWUoZHVtbXlTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlGb250
RmFtaWx5LCBzdHJpbmcsIGZhbHNlLCBmYWxzZSwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NWYWx1ZUxpc3Q+
KGR1bW15U3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250RmFtaWx5KSk7
Cit9CisKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xh
cmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0
YW50LCBib29sIHN0cmljdCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAg
ICAgaWYgKHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0
cmluZywgaW1wb3J0YW50LCBzdHJpY3QsIGNvbnRleHRTdHlsZVNoZWV0KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuaAppbmRleCBhMTM1MGU5Li4wNWU2ZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBA
IC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwg
Ym9vbCBzdHJpY3QsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBzdGF0
aWMgYm9vbCBwYXJzZUNvbG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIGJvb2wgc3Ry
aWN0ID0gZmFsc2UpOwogICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBj
b2xvciwgY29uc3QgU3RyaW5nJiwgRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IHBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShpbnQgcHJvcElkLCBDU1NQYXJzZXJWYWx1ZSop
OwogICAgIGJvb2wgcGFyc2VEZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0KiwgY29uc3QgU3Ry
aW5nJiwgUmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4qLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0
U3R5bGVTaGVldCk7CiAgICAgYm9vbCBwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiwgY29uc3Qg
U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCmluZGV4IGQ0OGM3ZTcuLjMw
ODNiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZVBvb2wuY3BwCkBAIC0yNSw3ICsyNSwxMCBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVQb29sLmgiCisKKyNp
bmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5j
bHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI4LDQg
KzEzMSwxMiBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NWYWx1ZVBvb2w6OmNy
ZWF0ZUZvbnRGYW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CitQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVQb29sOjpjcmVhdGVGb250RmFjZVZh
bHVlKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5
bGVTaGVldCkKK3sKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiYgdmFsdWUgPSBtX2ZvbnRGYWNl
VmFsdWVDYWNoZS5hZGQoc3RyaW5nLCAwKS5maXJzdC0+c2Vjb25kOworICAgIGlmICghdmFsdWUp
CisgICAgICAgIHZhbHVlID0gQ1NTUGFyc2VyOjpwYXJzZUZvbnRGYWNlVmFsdWUoc3RyaW5nLCBj
b250ZXh0U3R5bGVTaGVldCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVQb29sLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVQb29sLmgKaW5kZXggNTdjN2NjNi4uYWRlOWZlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZVBvb2wuaApAQCAtMjksMTYgKzI5LDIwIEBACiAjaW5jbHVkZSAiQ1NTSW5oZXJpdGVkVmFs
dWUuaCIKICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBDU1NWYWx1ZUxpc3Q7CisKIGNsYXNzIENTU1ZhbHVlUG9vbCA6
IHB1YmxpYyBSZWZDb3VudGVkPENTU1ZhbHVlUG9vbD4gewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1ZhbHVlUG9vbD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENT
U1ZhbHVlUG9vbCk7IH0KICAgICB+Q1NTVmFsdWVQb29sKCk7CiAKKyAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlTGlzdD4gY3JlYXRlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gY3JlYXRlRm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYpOwogICAgIFBhc3NS
ZWZQdHI8Q1NTSW5oZXJpdGVkVmFsdWU+IGNyZWF0ZUluaGVyaXRlZFZhbHVlKCkgeyByZXR1cm4g
bV9pbmhlcml0ZWRWYWx1ZTsgfQogICAgIFBhc3NSZWZQdHI8Q1NTSW5pdGlhbFZhbHVlPiBjcmVh
dGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIG1faW1wbGljaXRJbml0aWFsVmFsdWU7
IH0KQEAgLTczLDYgKzc3LDkgQEAgcHJpdmF0ZToKICAgICBJbnRlZ2VyVmFsdWVDYWNoZSBtX3Bl
cmNlbnRWYWx1ZUNhY2hlOwogICAgIEludGVnZXJWYWx1ZUNhY2hlIG1fbnVtYmVyVmFsdWVDYWNo
ZTsKIAorICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+ID4gRm9udEZhY2VWYWx1ZUNhY2hlOworICAgIEZvbnRGYWNlVmFsdWVDYWNoZSBtX2ZvbnRG
YWNlVmFsdWVDYWNoZTsKKwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gPiBGb250RmFtaWx5VmFsdWVDYWNoZTsKICAgICBGb250RmFtaWx5VmFs
dWVDYWNoZSBtX2ZvbnRGYW1pbHlWYWx1ZUNhY2hlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvbnRFbGVtZW50LmNwcAppbmRleCBlYTA0MDE3Li5hN2MyZTk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9udEVsZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUgIkNTU1Zh
bHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJDU1NW
YWx1ZVBvb2wuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2Vy
SWRpb21zLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTczLDkg
KzE3NSwxMCBAQCB2b2lkIEhUTUxGb250RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRl
KEF0dHJpYnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldAogICAgICAgICAgICAgYWRkUHJvcGVy
dHlUb0F0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBzaXplKTsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb2xvckF0dHIpCiAgICAgICAgIGFkZEhUTUxD
b2xvclRvU3R5bGUoc3R5bGUsIENTU1Byb3BlcnR5Q29sb3IsIGF0dHItPnZhbHVlKCkpOwotICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBmYWNlQXR0cikKLSAgICAgICAgYWRkUHJvcGVydHlU
b0F0dHJpYnV0ZVN0eWxlKHN0eWxlLCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksIGF0dHItPnZhbHVl
KCkpOwotICAgIGVsc2UKKyAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gZmFjZUF0dHIpIHsK
KyAgICAgICAgaWYgKFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGZvbnRGYWNlVmFsdWUgPSBkb2N1bWVu
dCgpLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlRm9udEZhY2VWYWx1ZShhdHRyLT52YWx1ZSgpLCBk
b2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSkpCisgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHkoQ1NTUHJvcGVydHlGb250RmFtaWx5LCBmb250RmFjZVZhbHVlLnJlbGVh
c2UoKSkpOworICAgIH0gZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
QXR0cmlidXRlKGF0dHIsIHN0eWxlKTsKIH0KIAo=
</data>
<flag name="review"
          id="130417"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>