<?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>159783</bug_id>
          
          <creation_ts>2016-07-14 14:33:16 -0700</creation_ts>
          <short_desc>Check whether font is nonnull for GlyphData instead of calling GlyphData::isValid()</short_desc>
          <delta_ts>2025-03-23 20:10:51 -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>MathML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>159702</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>ba8342776</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pvollan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1211145</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-14 14:33:16 -0700</bug_when>
    <thetext>See bug 155018 comment 36. Also, probably the reason for bug 159702.

fred@debian:~/webkit/WebKit/Source/WebCore/rendering/mathml$ grep &apos;\.isValid&apos; *
MathOperator.cpp:    return data.isValid() ? data.font-&gt;boundsForGlyph(data.glyph) : FloatRect();
MathOperator.cpp:    return data.isValid() ? data.font-&gt;widthForGlyph(data.glyph) : 0;
MathOperator.cpp:    return baseGlyph.isValid() &amp;&amp; baseGlyph.font == &amp;style.fontCascade().primaryFont();
MathOperator.cpp:    ASSERT(sizeVariant.isValid());
MathOperator.cpp:    ASSERT(m_assembly.extension.isValid());
MathOperator.cpp:    ASSERT(m_assembly.extension.isValid());
MathOperator.cpp:    ASSERT(m_assembly.topOrRight.isValid());
MathOperator.cpp:    ASSERT(m_assembly.bottomOrLeft.isValid());
MathOperator.cpp:    if (m_assembly.middle.isValid()) {
MathOperator.cpp:    ASSERT(m_assembly.bottomOrLeft.isValid());
MathOperator.cpp:    ASSERT(m_assembly.topOrRight.isValid());
MathOperator.cpp:    if (m_assembly.middle.isValid()) {
MathOperator.cpp:        ASSERT(m_variant.isValid());
RenderMathMLOperator.cpp:            float glyphWidth = data.isValid() ? data.font-&gt;widthForGlyph(data.glyph) : 0;
RenderMathMLToken.cpp:    if (m_mathVariantGlyph.isValid()) {
RenderMathMLToken.cpp:    if (m_mathVariantGlyph.isValid())
RenderMathMLToken.cpp:    if (!m_mathVariantGlyph.isValid()) {
RenderMathMLToken.cpp:    if (info.context().paintingDisabled() || info.phase != PaintPhaseForeground || style().visibility() != VISIBLE || !m_mathVariantGlyph.isValid())
RenderMathMLToken.cpp:    if (m_mathVariantGlyph.isValid())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211345</commentid>
    <comment_count>1</comment_count>
      <attachid>283740</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-14 23:51:51 -0700</bug_when>
    <thetext>Created attachment 283740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211433</commentid>
    <comment_count>2</comment_count>
      <attachid>283740</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-15 09:36:18 -0700</bug_when>
    <thetext>Comment on attachment 283740
Patch

I wonder if there is other code that really means &quot;font is non-null and also isValid&quot;? r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211455</commentid>
    <comment_count>3</comment_count>
      <attachid>283740</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 10:04:34 -0700</bug_when>
    <thetext>Comment on attachment 283740
Patch

Clearing flags on attachment: 283740

Committed r203280: &lt;http://trac.webkit.org/changeset/203280&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211456</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-15 10:04:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1211462</commentid>
    <comment_count>5</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-15 10:24:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 283740 [details]
&gt; Patch
&gt; 
&gt; I wonder if there is other code that really means &quot;font is non-null and also
&gt; isValid&quot;? r=me

Oh, I just saw this comment. As defined in GlyphData, isValid means &quot;font || glyph&quot; which sounds weird for me. So just checking &apos;font&apos; is stronger...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2105486</commentid>
    <comment_count>6</comment_count>
    <who name="Leroy Wilder">ba8342776</who>
    <bug_when>2025-03-23 20:10:51 -0700</bug_when>
    <thetext>Hey, that’s a solid catch! Checking if the font is nonnull for GlyphData instead of relying on `GlyphData::isValid()` makes a lot of sense—cuts out an extra call and keeps it straightforward. I’ve run into similar situations where `isValid()` can be a bit of a black box, and just confirming the font’s there feels more reliable. Did you notice any funky edge cases that prompted this, or just optimizing for cleaner code? Either way, I’m stealing this approach for my next tweak—thanks for the heads-up! https://ragdollhit.io/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283740</attachid>
            <date>2016-07-14 23:51:51 -0700</date>
            <delta_ts>2016-07-15 10:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159783-20160715085102.patch</filename>
            <type>text/plain</type>
            <size>11254</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThkNTQwMTEyMzM4MzA1
OTIzMjM1NGE2MGFlYWUyZmQ0YzQ3ZGJlYy4uZTg5YzdjYmFmZTQ2Mzc3OTY0MGIyMDM4YzNkMmUy
OWM3YTcwMzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE2LTA3LTE0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBDaGVjayB3aGV0aGVyIGZv
bnQgaXMgbm9ubnVsbCBmb3IgR2x5cGhEYXRhIGluc3RlYWQgb2YgY2FsbGluZyBHbHlwaERhdGE6
OmlzVmFsaWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NzgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgR2x5cGhEYXRhOjppc1ZhbGlkKCkgcmV0dXJucyB0cnVlIGZvciBHbHlwaERhdGEgd2l0aCBu
dWxsICdmb250JyBwb2ludGVyIHdoZW4gdGhlICdnbHlwaCcKKyAgICAgICAgaW5kZXggaXMgbm9u
emVyby4gVGhpcyBiZWhhdmlvciBpcyBub3QgZXhwZWN0ZWQgYnkgdGhlIE1hdGhNTCBjb2RlIGFu
ZCB3ZSBoYXZlIGhhZCBjcmFzaGVzCisgICAgICAgIGluIG91ciB0ZXN0IHN1aXRlIGluIHRoZSBw
YXN0IG9uIFdpbmRvd3MgKGUuZy4gYnVnIDE0MDY1MykuIFdlIHRodXMgcmVwbGFjZSB0aGUgY2Fs
bCB0bworICAgICAgICBHbHlwaERhdGE6OmlzVmFsaWQoKSB3aXRoIGEgc3Ryb25nZXIgdmVyaWZp
Y2F0aW9uOiBXaGV0aGVyIHRoZSAnZm9udCcgcG9pbnRlciBpcyBub256ZXJvLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgdGhpcyBvbmx5IG1ha2VzIG51bGwgcG9pbnRlciBjaGVja3Mgc3Ryb25n
ZXIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpib3VuZHNGb3JHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjphZHZhbmNl
V2lkdGhGb3JHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoT3BlcmF0b3I6OmdldEJhc2VH
bHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoT3BlcmF0b3I6OnNldFNpemVWYXJpYW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6ZmlsbFdpdGhWZXJ0aWNhbEV4dGVuc2lv
bkdseXBoKToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhPcGVyYXRvcjo6ZmlsbFdpdGhIb3Jpem9u
dGFsRXh0ZW5zaW9uR2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE9wZXJhdG9yOjpwYWlu
dFZlcnRpY2FsR2x5cGhBc3NlbWJseSk6CisgICAgICAgIChXZWJDb3JlOjpNYXRoT3BlcmF0b3I6
OnBhaW50SG9yaXpvbnRhbEdseXBoQXNzZW1ibHkpOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE9w
ZXJhdG9yOjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Y29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MVG9r
ZW46OmNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxUb2tlbjo6bGF5b3V0QmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TWF0aE1MVG9rZW46OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2Vu
OjpwYWludENoaWxkcmVuKToKKwogMjAxNi0wNy0xNCAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53
cz4KIAogICAgICAgICBDaGFuZ2UgQ1NTUGFyc2VyOjpzb3VyY2VTaXplIHJldHVybmluZyBPcHRp
b25hbDxDU1NQYXJzZXI6OlNvdXJjZVNpemU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL01hdGhPcGVyYXRvci5jcHAKaW5kZXggODE1NTI1NTJkYWI5MTAxOWVlYTU1NjBi
MTcwNWY3MDU5ZjRjZWE0Yi4uMzY3YThmNDdiNTU5YTYyNzM3OWJmM2VmMGE4Njg0Y2Y0MjU4MzQ0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9NYXRoT3BlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvTWF0aE9wZXJhdG9y
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbmxp
bmUgRmxvYXRSZWN0IGJvdW5kc0ZvckdseXBoKGNvbnN0IEdseXBoRGF0YSYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gZGF0YS5pc1ZhbGlkKCkgPyBkYXRhLmZvbnQtPmJvdW5kc0ZvckdseXBoKGRhdGEu
Z2x5cGgpIDogRmxvYXRSZWN0KCk7CisgICAgcmV0dXJuIGRhdGEuZm9udCA/IGRhdGEuZm9udC0+
Ym91bmRzRm9yR2x5cGgoZGF0YS5nbHlwaCkgOiBGbG9hdFJlY3QoKTsKIH0KIAogc3RhdGljIGlu
bGluZSBmbG9hdCBoZWlnaHRGb3JHbHlwaChjb25zdCBHbHlwaERhdGEmIGRhdGEpCkBAIC01NSw3
ICs1NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBnZXRBc2NlbnRBbmREZXNjZW50Rm9yR2x5cGgo
Y29uc3QgR2x5cGhEYXRhJiBkYXRhLCBMYXlvdXRVbml0CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQg
YWR2YW5jZVdpZHRoRm9yR2x5cGgoY29uc3QgR2x5cGhEYXRhJiBkYXRhKQogewotICAgIHJldHVy
biBkYXRhLmlzVmFsaWQoKSA/IGRhdGEuZm9udC0+d2lkdGhGb3JHbHlwaChkYXRhLmdseXBoKSA6
IDA7CisgICAgcmV0dXJuIGRhdGEuZm9udCA/IGRhdGEuZm9udC0+d2lkdGhGb3JHbHlwaChkYXRh
LmdseXBoKSA6IDA7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGhhcmRjb2RlZCBkYXRhIGNhbiBiZSBy
ZW1vdmVkIHdoZW4gT3BlblR5cGUgTUFUSCBmb250IGFyZSB3aWRlbHkgYXZhaWxhYmxlIChodHRw
Oi8vd2tidWcvMTU2ODM3KS4KQEAgLTEyNCwxMiArMTI0LDEyIEBAIExheW91dFVuaXQgTWF0aE9w
ZXJhdG9yOjpzdHJldGNoU2l6ZSgpIGNvbnN0CiBib29sIE1hdGhPcGVyYXRvcjo6Z2V0QmFzZUds
eXBoKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgR2x5cGhEYXRhJiBiYXNlR2x5cGgpIGNvbnN0
CiB7CiAgICAgYmFzZUdseXBoID0gc3R5bGUuZm9udENhc2NhZGUoKS5nbHlwaERhdGFGb3JDaGFy
YWN0ZXIobV9iYXNlQ2hhcmFjdGVyLCAhc3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKTsK
LSAgICByZXR1cm4gYmFzZUdseXBoLmlzVmFsaWQoKSAmJiBiYXNlR2x5cGguZm9udCA9PSAmc3R5
bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgpOworICAgIHJldHVybiBiYXNlR2x5cGguZm9u
dCAmJiBiYXNlR2x5cGguZm9udCA9PSAmc3R5bGUuZm9udENhc2NhZGUoKS5wcmltYXJ5Rm9udCgp
OwogfQogCiB2b2lkIE1hdGhPcGVyYXRvcjo6c2V0U2l6ZVZhcmlhbnQoY29uc3QgR2x5cGhEYXRh
JiBzaXplVmFyaWFudCkKIHsKLSAgICBBU1NFUlQoc2l6ZVZhcmlhbnQuaXNWYWxpZCgpKTsKKyAg
ICBBU1NFUlQoc2l6ZVZhcmlhbnQuZm9udCk7CiAgICAgQVNTRVJUKHNpemVWYXJpYW50LmZvbnQt
Pm1hdGhEYXRhKCkpOwogICAgIG1fc3RyZXRjaFR5cGUgPSBTdHJldGNoVHlwZTo6U2l6ZVZhcmlh
bnQ7CiAgICAgbV92YXJpYW50ID0gc2l6ZVZhcmlhbnQ7CkBAIC00NjgsNyArNDY4LDcgQEAgdm9p
ZCBNYXRoT3BlcmF0b3I6OmZpbGxXaXRoVmVydGljYWxFeHRlbnNpb25HbHlwaChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIFBhaW4KIHsKICAgICBBU1NFUlQobV9vcGVyYXRvclR5cGUgPT0gVHlw
ZTo6VmVydGljYWxPcGVyYXRvcik7CiAgICAgQVNTRVJUKG1fc3RyZXRjaFR5cGUgPT0gU3RyZXRj
aFR5cGU6OkdseXBoQXNzZW1ibHkpOwotICAgIEFTU0VSVChtX2Fzc2VtYmx5LmV4dGVuc2lvbi5p
c1ZhbGlkKCkpOworICAgIEFTU0VSVChtX2Fzc2VtYmx5LmV4dGVuc2lvbi5mb250KTsKICAgICBB
U1NFUlQoZnJvbS55KCkgPD0gdG8ueSgpKTsKIAogICAgIC8vIElmIHRoZXJlIGlzIG5vIHNwYWNl
IGZvciB0aGUgZXh0ZW5zaW9uIGdseXBoLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLgpA
QCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgTWF0aE9wZXJhdG9yOjpmaWxsV2l0aEhvcml6b250YWxF
eHRlbnNpb25HbHlwaChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFBhCiB7CiAgICAgQVNTRVJU
KG1fb3BlcmF0b3JUeXBlID09IFR5cGU6Okhvcml6b250YWxPcGVyYXRvcik7CiAgICAgQVNTRVJU
KG1fc3RyZXRjaFR5cGUgPT0gU3RyZXRjaFR5cGU6OkdseXBoQXNzZW1ibHkpOwotICAgIEFTU0VS
VChtX2Fzc2VtYmx5LmV4dGVuc2lvbi5pc1ZhbGlkKCkpOworICAgIEFTU0VSVChtX2Fzc2VtYmx5
LmV4dGVuc2lvbi5mb250KTsKICAgICBBU1NFUlQoZnJvbS54KCkgPD0gdG8ueCgpKTsKICAgICBB
U1NFUlQoZnJvbS55KCkgPT0gdG8ueSgpKTsKIApAQCAtNTQ1LDggKzU0NSw4IEBAIHZvaWQgTWF0
aE9wZXJhdG9yOjpwYWludFZlcnRpY2FsR2x5cGhBc3NlbWJseShjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIFBhaW50SW5mCiB7CiAgICAgQVNTRVJUKG1fb3BlcmF0b3JUeXBlID09IFR5cGU6OlZl
cnRpY2FsT3BlcmF0b3IpOwogICAgIEFTU0VSVChtX3N0cmV0Y2hUeXBlID09IFN0cmV0Y2hUeXBl
OjpHbHlwaEFzc2VtYmx5KTsKLSAgICBBU1NFUlQobV9hc3NlbWJseS50b3BPclJpZ2h0LmlzVmFs
aWQoKSk7Ci0gICAgQVNTRVJUKG1fYXNzZW1ibHkuYm90dG9tT3JMZWZ0LmlzVmFsaWQoKSk7Cisg
ICAgQVNTRVJUKG1fYXNzZW1ibHkudG9wT3JSaWdodC5mb250KTsKKyAgICBBU1NFUlQobV9hc3Nl
bWJseS5ib3R0b21PckxlZnQuZm9udCk7CiAKICAgICAvLyBXZSBhcmUgcG9zaXRpb25pbmcgdGhl
IGdseXBocyBzbyB0aGF0IHRoZSBlZGdlIG9mIHRoZSB0aWdodCBnbHlwaCBib3VuZHMgbGluZSB1
cCBleGFjdGx5IHdpdGggdGhlIGVkZ2VzIG9mIG91ciBwYWludCBib3guCiAgICAgTGF5b3V0UG9p
bnQgb3BlcmF0b3JUb3BMZWZ0ID0gcGFpbnRPZmZzZXQ7CkBAIC01NTgsNyArNTU4LDcgQEAgdm9p
ZCBNYXRoT3BlcmF0b3I6OnBhaW50VmVydGljYWxHbHlwaEFzc2VtYmx5KGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSwgUGFpbnRJbmYKICAgICBMYXlvdXRQb2ludCBib3R0b21HbHlwaE9yaWdpbihv
cGVyYXRvclRvcExlZnQueCgpLCBvcGVyYXRvclRvcExlZnQueSgpICsgc3RyZXRjaFNpemUoKSAt
IChib3R0b21HbHlwaEJvdW5kcy5oZWlnaHQoKSArIGJvdHRvbUdseXBoQm91bmRzLnkoKSkpOwog
ICAgIExheW91dFJlY3QgYm90dG9tR2x5cGhQYWludFJlY3QgPSBwYWludEdseXBoKHN0eWxlLCBp
bmZvLCBtX2Fzc2VtYmx5LmJvdHRvbU9yTGVmdCwgYm90dG9tR2x5cGhPcmlnaW4sIFRyaW1Ub3Ap
OwogCi0gICAgaWYgKG1fYXNzZW1ibHkubWlkZGxlLmlzVmFsaWQoKSkgeworICAgIGlmIChtX2Fz
c2VtYmx5Lm1pZGRsZS5mb250KSB7CiAgICAgICAgIC8vIENlbnRlciB0aGUgZ2x5cGggb3JpZ2lu
IGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZ2x5cGggcGFpbnQgZXh0ZW50cy4gVGhlbiBzaGlm
dCBpdCBoYWxmIHRoZSBwYWludCBoZWlnaHQgdG93YXJkIHRoZSBib3R0b20gZ2x5cGguCiAgICAg
ICAgIEZsb2F0UmVjdCBtaWRkbGVHbHlwaEJvdW5kcyA9IGJvdW5kc0ZvckdseXBoKG1fYXNzZW1i
bHkubWlkZGxlKTsKICAgICAgICAgTGF5b3V0UG9pbnQgbWlkZGxlR2x5cGhPcmlnaW4ob3BlcmF0
b3JUb3BMZWZ0LngoKSwgdG9wR2x5cGhPcmlnaW4ueSgpKTsKQEAgLTU3Niw4ICs1NzYsOCBAQCB2
b2lkIE1hdGhPcGVyYXRvcjo6cGFpbnRIb3Jpem9udGFsR2x5cGhBc3NlbWJseShjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIFBhaW50SQogewogICAgIEFTU0VSVChtX29wZXJhdG9yVHlwZSA9PSBU
eXBlOjpIb3Jpem9udGFsT3BlcmF0b3IpOwogICAgIEFTU0VSVChtX3N0cmV0Y2hUeXBlID09IFN0
cmV0Y2hUeXBlOjpHbHlwaEFzc2VtYmx5KTsKLSAgICBBU1NFUlQobV9hc3NlbWJseS5ib3R0b21P
ckxlZnQuaXNWYWxpZCgpKTsKLSAgICBBU1NFUlQobV9hc3NlbWJseS50b3BPclJpZ2h0LmlzVmFs
aWQoKSk7CisgICAgQVNTRVJUKG1fYXNzZW1ibHkuYm90dG9tT3JMZWZ0LmZvbnQpOworICAgIEFT
U0VSVChtX2Fzc2VtYmx5LnRvcE9yUmlnaHQuZm9udCk7CiAKICAgICAvLyBXZSBhcmUgcG9zaXRp
b25pbmcgdGhlIGdseXBocyBzbyB0aGF0IHRoZSBlZGdlIG9mIHRoZSB0aWdodCBnbHlwaCBib3Vu
ZHMgbGluZSB1cCBleGFjdGx5IHdpdGggdGhlIGVkZ2VzIG9mIG91ciBwYWludCBib3guCiAgICAg
TGF5b3V0UG9pbnQgb3BlcmF0b3JUb3BMZWZ0ID0gcGFpbnRPZmZzZXQ7CkBAIC01ODksNyArNTg5
LDcgQEAgdm9pZCBNYXRoT3BlcmF0b3I6OnBhaW50SG9yaXpvbnRhbEdseXBoQXNzZW1ibHkoY29u
c3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBQYWludEkKICAgICBMYXlvdXRQb2ludCByaWdodEdseXBo
T3JpZ2luKG9wZXJhdG9yVG9wTGVmdC54KCkgKyBzdHJldGNoU2l6ZSgpIC0gcmlnaHRHbHlwaEJv
dW5kcy53aWR0aCgpLCBiYXNlbGluZVkpOwogICAgIExheW91dFJlY3QgcmlnaHRHbHlwaFBhaW50
UmVjdCA9IHBhaW50R2x5cGgoc3R5bGUsIGluZm8sIG1fYXNzZW1ibHkudG9wT3JSaWdodCwgcmln
aHRHbHlwaE9yaWdpbiwgVHJpbUxlZnQpOwogCi0gICAgaWYgKG1fYXNzZW1ibHkubWlkZGxlLmlz
VmFsaWQoKSkgeworICAgIGlmIChtX2Fzc2VtYmx5Lm1pZGRsZS5mb250KSB7CiAgICAgICAgIC8v
IENlbnRlciB0aGUgZ2x5cGggb3JpZ2luIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZ2x5cGgg
cGFpbnQgZXh0ZW50cy4KICAgICAgICAgTGF5b3V0UG9pbnQgbWlkZGxlR2x5cGhPcmlnaW4ob3Bl
cmF0b3JUb3BMZWZ0LngoKSwgYmFzZWxpbmVZKTsKICAgICAgICAgbWlkZGxlR2x5cGhPcmlnaW4u
bW92ZUJ5KExheW91dFBvaW50KChyaWdodEdseXBoUGFpbnRSZWN0LngoKSAtIGxlZnRHbHlwaFBh
aW50UmVjdC5tYXhYKCkpIC8gMi4wLCAwKSk7CkBAIC02MzIsNyArNjMyLDcgQEAgdm9pZCBNYXRo
T3BlcmF0b3I6OnBhaW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBMYXlvdXQKICAgICAgICAgaWYgKCFnZXRCYXNlR2x5cGgoc3R5bGUsIGdseXBoRGF0
YSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChtX3N0cmV0Y2hUeXBlID09
IFN0cmV0Y2hUeXBlOjpTaXplVmFyaWFudCkgewotICAgICAgICBBU1NFUlQobV92YXJpYW50Lmlz
VmFsaWQoKSk7CisgICAgICAgIEFTU0VSVChtX3ZhcmlhbnQuZm9udCk7CiAgICAgICAgIGdseXBo
RGF0YSA9IG1fdmFyaWFudDsKICAgICB9CiAgICAgR2x5cGhCdWZmZXIgYnVmZmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcAppbmRleCA3MThkZDZmODA2Yzk0MjM5YTI4YjZlM2Y2ZjA4YWJjYWFiYTQxOWJmLi5m
NGYzYjc2NWY3YWMxZWI2YjZhNmUzNzg4MWUwOTdlMzg0YWJmNGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmNvbXB1dGVQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkKICAgICAgICAgaWYgKGlzSW52aXNpYmxlT3BlcmF0b3Io
KSkgewogICAgICAgICAgICAgLy8gSW4gc29tZSBmb250cywgZ2x5cGhzIGZvciBpbnZpc2libGUg
b3BlcmF0b3JzIGhhdmUgbm9uemVybyB3aWR0aC4gQ29uc2VxdWVudGx5LCB3ZSBzdWJ0cmFjdCB0
aGF0IHdpZHRoIGhlcmUgdG8gYXZvaWQgd2lkZSBnYXBzLgogICAgICAgICAgICAgR2x5cGhEYXRh
IGRhdGEgPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZ2x5cGhEYXRhRm9yQ2hhcmFjdGVyKG1fdGV4
dENvbnRlbnQsIGZhbHNlKTsKLSAgICAgICAgICAgIGZsb2F0IGdseXBoV2lkdGggPSBkYXRhLmlz
VmFsaWQoKSA/IGRhdGEuZm9udC0+d2lkdGhGb3JHbHlwaChkYXRhLmdseXBoKSA6IDA7CisgICAg
ICAgICAgICBmbG9hdCBnbHlwaFdpZHRoID0gZGF0YS5mb250ID8gZGF0YS5mb250LT53aWR0aEZv
ckdseXBoKGRhdGEuZ2x5cGgpIDogMDsKICAgICAgICAgICAgIEFTU0VSVChnbHlwaFdpZHRoIDw9
IHByZWZlcnJlZFdpZHRoKTsKICAgICAgICAgICAgIHByZWZlcnJlZFdpZHRoIC09IGdseXBoV2lk
dGg7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKaW5kZXggNTBlZDQwYjVjZTkwZTU1MTcyZjY3MTQyODRi
M2VhZWFiZjY5ZjQ0NS4uODJjMGRhNjA2MTA3NDc5ZGRmZjQ0ZTk0YWYyZTIxN2NjMDFmZjA0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHAKQEAgLTQ5Niw3ICs0OTYsNyBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjpj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpCiAgICAgaWYgKG1fbWF0aFZhcmlhbnRHbHlw
aERpcnR5KQogICAgICAgICB1cGRhdGVNYXRoVmFyaWFudEdseXBoKCk7CiAKLSAgICBpZiAobV9t
YXRoVmFyaWFudEdseXBoLmlzVmFsaWQoKSkgeworICAgIGlmIChtX21hdGhWYXJpYW50R2x5cGgu
Zm9udCkgewogICAgICAgICBtX21heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IG1fbWluUHJlZmVy
cmVkTG9naWNhbFdpZHRoID0gbV9tYXRoVmFyaWFudEdseXBoLmZvbnQtPndpZHRoRm9yR2x5cGgo
bV9tYXRoVmFyaWFudEdseXBoLmdseXBoKTsKICAgICAgICAgc2V0UHJlZmVycmVkTG9naWNhbFdp
ZHRoc0RpcnR5KGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTQ2LDcgKzU0Niw3IEBAIHZv
aWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZUZyb21FbGVtZW50KCkKIAogT3B0aW9uYWw8aW50
PiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewotICAgIGlm
IChtX21hdGhWYXJpYW50R2x5cGguaXNWYWxpZCgpKQorICAgIGlmIChtX21hdGhWYXJpYW50R2x5
cGguZm9udCkKICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihs
cm91bmRmKC1tX21hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobV9tYXRoVmFy
aWFudEdseXBoLmdseXBoKS55KCkpKSk7CiAgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpm
aXJzdExpbmVCYXNlbGluZSgpOwogfQpAQCAtNTU4LDcgKzU1OCw3IEBAIHZvaWQgUmVuZGVyTWF0
aE1MVG9rZW46OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBw
YWdlTG9naWNhCiAgICAgaWYgKCFyZWxheW91dENoaWxkcmVuICYmIHNpbXBsaWZpZWRMYXlvdXQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX21hdGhWYXJpYW50R2x5cGguaXNWYWxp
ZCgpKSB7CisgICAgaWYgKCFtX21hdGhWYXJpYW50R2x5cGguZm9udCkgewogICAgICAgICBSZW5k
ZXJNYXRoTUxCbG9jazo6bGF5b3V0QmxvY2socmVsYXlvdXRDaGlsZHJlbiwgcGFnZUxvZ2ljYWxI
ZWlnaHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MVG9rZW46OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0KQogICAgIFJlbmRlck1hdGhNTEJsb2NrOjpwYWludChpbmZvLCBwYWlu
dE9mZnNldCk7CiAKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiB1c2luZyBEcmF3R2x5cGgsIHdl
IG1heSBjb25zaWRlciB1c2luZyB0aGUgbW9yZSBnZW5lcmFsIFRleHRQYWludGVyIHNvIHRoYXQg
d2UgY2FuIGFwcGx5IG1hdGh2YXJpYW50IHRvIHN0cmluZ3Mgd2l0aCBhbiBhcmJpdHJhcnkgbnVt
YmVyIG9mIGNoYXJhY3RlcnMgYW5kIHByZXNlcnZlIGFkdmFuY2VkIENTUyBlZmZlY3RzICh0ZXh0
LXNoYWRvdywgZXRjKS4KLSAgICBpZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgp
IHx8IGluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmls
aXR5KCkgIT0gVklTSUJMRSB8fCAhbV9tYXRoVmFyaWFudEdseXBoLmlzVmFsaWQoKSkKKyAgICBp
ZiAoaW5mby5jb250ZXh0KCkucGFpbnRpbmdEaXNhYmxlZCgpIHx8IGluZm8ucGhhc2UgIT0gUGFp
bnRQaGFzZUZvcmVncm91bmQgfHwgc3R5bGUoKS52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSB8fCAh
bV9tYXRoVmFyaWFudEdseXBoLmZvbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcihpbmZvLmNvbnRleHQoKSk7CkBAIC01OTEsNyAr
NTkxLDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBj
b25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAKIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46
OnBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCwgUGFpbnRJbmZvJiBwYWludEluZm9Gb3JDaGlsZCwgYm9vbCB1c2VQcmludFJl
Y3QpCiB7Ci0gICAgaWYgKG1fbWF0aFZhcmlhbnRHbHlwaC5pc1ZhbGlkKCkpCisgICAgaWYgKG1f
bWF0aFZhcmlhbnRHbHlwaC5mb250KQogICAgICAgICByZXR1cm47CiAgICAgUmVuZGVyTWF0aE1M
QmxvY2s6OnBhaW50Q2hpbGRyZW4ocGFpbnRJbmZvLCBwYWludE9mZnNldCwgcGFpbnRJbmZvRm9y
Q2hpbGQsIHVzZVByaW50UmVjdCk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>