<?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>128510</bug_id>
          
          <creation_ts>2014-02-09 18:18:50 -0800</creation_ts>
          <short_desc>Add type-safe casts for ContentData subclasses</short_desc>
          <delta_ts>2014-02-10 09:30:40 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>978682</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-09 18:18:50 -0800</bug_when>
    <thetext>Add type-safe casts for all of the ContentData subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978683</commentid>
    <comment_count>1</comment_count>
      <attachid>223660</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-09 18:25:29 -0800</bug_when>
    <thetext>Created attachment 223660
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978759</commentid>
    <comment_count>2</comment_count>
      <attachid>223660</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-09 23:48:36 -0800</bug_when>
    <thetext>Comment on attachment 223660
Patch v1

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

&gt; Source/WebCore/rendering/style/ContentData.h:105
&gt; +inline bool ImageContentData::equals(const ContentData&amp; data) const
&gt; +{
&gt; +    if (!data.isImage())
&gt; +        return false;
&gt; +    return *toImageContentData(data).image() == *image();
&gt; +}

I think we could move this to the .cpp file, because I think everyone calls it polymorphically and so nobody really inlines it.

I also think this could read nicely with &amp;&amp; rather than early return.

&gt; Source/WebCore/rendering/style/ContentData.h:135
&gt; +inline bool TextContentData::equals(const ContentData&amp; data) const
&gt; +{
&gt; +    if (!data.isText())
&gt; +        return false;
&gt; +    return toTextContentData(data).text() == text();
&gt; +}

Ditto.

&gt; Source/WebCore/rendering/style/ContentData.h:169
&gt; +inline bool CounterContentData::equals(const ContentData&amp; data) const
&gt; +{
&gt; +    if (!data.isCounter())
&gt; +        return false;
&gt; +    return *toCounterContentData(data).counter() == *counter();
&gt; +}

Again.

&gt; Source/WebCore/rendering/style/ContentData.h:199
&gt; +inline bool QuoteContentData::equals(const ContentData&amp; data) const
&gt; +{
&gt; +    if (!data.isQuote())
&gt; +        return false;
&gt; +    return toQuoteContentData(data).quote() == quote();
&gt; +}

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978766</commentid>
    <comment_count>3</comment_count>
      <attachid>223660</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-10 00:18:54 -0800</bug_when>
    <thetext>Comment on attachment 223660
Patch v1

Clearing flags on attachment: 223660

Committed r163770: &lt;http://trac.webkit.org/changeset/163770&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978767</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-10 00:18:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>978922</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-10 09:30:40 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 223660 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=223660&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/style/ContentData.h:105
&gt; &gt; +inline bool ImageContentData::equals(const ContentData&amp; data) const
&gt; &gt; +{
&gt; &gt; +    if (!data.isImage())
&gt; &gt; +        return false;
&gt; &gt; +    return *toImageContentData(data).image() == *image();
&gt; &gt; +}
&gt; 
&gt; I think we could move this to the .cpp file, because I think everyone calls it polymorphically and so nobody really inlines it.
&gt; 
&gt; I also think this could read nicely with &amp;&amp; rather than early return.

Filed Bug 128538 to track this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223660</attachid>
            <date>2014-02-09 18:25:29 -0800</date>
            <delta_ts>2014-02-10 00:18:53 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-128510-20140209182528.patch</filename>
            <type>text/plain</type>
            <size>10598</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVkNTU1NzhiNjQ4MGU4
NmZmNzRjZjNiMzJlZWEzY2M2NjQzMjBiNi4uYTZkN2U5ZTgxMjljOGIwZjg5NGI2OWYzYTk2NDUw
ODU1NWM4Y2E3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE0LTAyLTA5ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHR5cGUtc2FmZSBj
YXN0cyBmb3IgQ29udGVudERhdGEgc3ViY2xhc3NlcworICAgICAgICA8aHR0cDovL3dlYmtpdC5v
cmcvYi8xMjg1MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRlbnRUb0NTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlcyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENvbnRl
bnQpOgorICAgICAgICAtIFN3aXRjaCB0byB0b0Zvb0NvbnRlbnREYXRhKCkgbWV0aG9kcy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oOgorICAgICAgICAtIERlZmlu
ZSB0b0Zvb0NvbnRlbnREYXRhKCkgbWV0aG9kcy4KKyAgICAgICAgLSBFeHRyYWN0IEZvb0NvbnRl
bnREYXRhOjplcXVhbHMoKSBtZXRob2RzIHNvIHRoYXQgdGhlCisgICAgICAgICAgdG9Gb29Db250
ZW50RGF0YSgpIG1ldGhvZHMgY2FuIGJlIHVzZWQuCisKIDIwMTQtMDItMDggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIElEQjogc3RvcmFnZS9pbmRleGVkZGIv
bW96aWxsYS92ZXJzaW9uY2hhbmdlLWFib3J0Lmh0bWwgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYjcwODU1YzI4
MzkyYTE0NDVjMjEwMDI0ZDYwMmQyY2UwZTZjOTAxMy4uM2U2NjU5YjhlMThhYmJjZGYxYjE3M2Ni
OWJiN2UyYWQyODE5YmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE0MDQsMTUgKzE0MDQsMTUgQEAgc3RhdGljIFBh
c3NSZWY8Q1NTVmFsdWVMaXN0PiBjb250ZW50VG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUpCiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRl
ZCgpOwogICAgIGZvciAoY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUtPmNv
bnRlbnREYXRhKCk7IGNvbnRlbnREYXRhOyBjb250ZW50RGF0YSA9IGNvbnRlbnREYXRhLT5uZXh0
KCkpIHsKICAgICAgICAgaWYgKGNvbnRlbnREYXRhLT5pc0NvdW50ZXIoKSkgewotICAgICAgICAg
ICAgY29uc3QgQ291bnRlckNvbnRlbnQqIGNvdW50ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBDb3Vu
dGVyQ29udGVudERhdGEqPihjb250ZW50RGF0YSktPmNvdW50ZXIoKTsKKyAgICAgICAgICAgIGNv
bnN0IENvdW50ZXJDb250ZW50KiBjb3VudGVyID0gdG9Db3VudGVyQ29udGVudERhdGEoY29udGVu
dERhdGEpLT5jb3VudGVyKCk7CiAgICAgICAgICAgICBBU1NFUlQoY291bnRlcik7CiAgICAgICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShjb3VudGVy
LT5pZGVudGlmaWVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CiAg
ICAgICAgIH0gZWxzZSBpZiAoY29udGVudERhdGEtPmlzSW1hZ2UoKSkgewotICAgICAgICAgICAg
Y29uc3QgU3R5bGVJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxjb25zdCBJbWFnZUNvbnRlbnRE
YXRhKj4oY29udGVudERhdGEpLT5pbWFnZSgpOworICAgICAgICAgICAgY29uc3QgU3R5bGVJbWFn
ZSogaW1hZ2UgPSB0b0ltYWdlQ29udGVudERhdGEoY29udGVudERhdGEpLT5pbWFnZSgpOwogICAg
ICAgICAgICAgQVNTRVJUKGltYWdlKTsKICAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGlt
YWdlLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgfSBlbHNlIGlmIChjb250ZW50RGF0YS0+aXNUZXh0
KCkpCi0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVW
YWx1ZShzdGF0aWNfY2FzdDxjb25zdCBUZXh0Q29udGVudERhdGEqPihjb250ZW50RGF0YSktPnRl
eHQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKKyAgICAgICAgICAgIGxpc3Qu
Z2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHRvVGV4dENvbnRlbnREYXRh
KGNvbnRlbnREYXRhKS0+dGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOwog
ICAgIH0KICAgICBpZiAoc3R5bGUtPmhhc0Zsb3dGcm9tKCkpCiAgICAgICAgIGxpc3QuZ2V0KCku
YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHN0eWxlLT5yZWdpb25UaHJlYWQoKSwg
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAppbmRleCA1Yzc0YzQ2MTY0Yzk4MzdkNmM1NTdkMGI3MWI3MzAxYzUxMmUwODU3Li4z
ZDRmYmU3YjcwNWViMjNmZjNlOWMxNDllYzY3ZWM3ZGZiODljZDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0zNTQ3LDExICszNTQ3LDExIEBAIHZvaWQgU3R5bGVSZXNv
bHZlcjo6bG9hZFBlbmRpbmdJbWFnZXMoKQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Q29udGVu
dDogewogICAgICAgICAgICAgZm9yIChDb250ZW50RGF0YSogY29udGVudERhdGEgPSBjb25zdF9j
YXN0PENvbnRlbnREYXRhKj4obV9zdGF0ZS5zdHlsZSgpLT5jb250ZW50RGF0YSgpKTsgY29udGVu
dERhdGE7IGNvbnRlbnREYXRhID0gY29udGVudERhdGEtPm5leHQoKSkgewogICAgICAgICAgICAg
ICAgIGlmIChjb250ZW50RGF0YS0+aXNJbWFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFN0
eWxlSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8SW1hZ2VDb250ZW50RGF0YSo+KGNvbnRlbnRE
YXRhKS0+aW1hZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgU3R5bGVJbWFnZSogaW1hZ2UgPSB0
b0ltYWdlQ29udGVudERhdGEoY29udGVudERhdGEpLT5pbWFnZSgpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoaW1hZ2UtPmlzUGVuZGluZ0ltYWdlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsb2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2Uoc3Rh
dGljX2Nhc3Q8U3R5bGVQZW5kaW5nSW1hZ2UqPihpbWFnZSkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGxvYWRlZEltYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEltYWdlQ29udGVudERhdGEqPihjb250ZW50RGF0YSktPnNldEltYWdlKGxvYWRlZElt
YWdlLnJlbGVhc2UoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9JbWFnZUNvbnRl
bnREYXRhKGNvbnRlbnREYXRhKS0+c2V0SW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFzZSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAxN2VkNDIyMWY3
MmFkMjVkMzhmMTM5YjgzOTg5ODQyM2Q0Zjc4NjdiLi41MzkwMWVkZDI1MjhlYTEwOThkZGRlMjdj
YmJlZjg4MGVjYWNjMWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRl
ckVsZW1lbnQ6OmNyZWF0ZUZvcihFbGVtZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmQKICAgICAv
LyBPdGhlcndpc2UgYWN0cyBhcyBpZiB3ZSBkaWRuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCiAg
ICAgY29uc3QgQ29udGVudERhdGEqIGNvbnRlbnREYXRhID0gc3R5bGUuZ2V0KCkuY29udGVudERh
dGEoKTsKICAgICBpZiAoY29udGVudERhdGEgJiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgY29u
dGVudERhdGEtPmlzSW1hZ2UoKSAmJiAhZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSkgewotICAg
ICAgICBhdXRvIHN0eWxlSW1hZ2UgPSBjb25zdF9jYXN0PFN0eWxlSW1hZ2UqPihzdGF0aWNfY2Fz
dDxjb25zdCBJbWFnZUNvbnRlbnREYXRhKj4oY29udGVudERhdGEpLT5pbWFnZSgpKTsKKyAgICAg
ICAgYXV0byBzdHlsZUltYWdlID0gY29uc3RfY2FzdDxTdHlsZUltYWdlKj4odG9JbWFnZUNvbnRl
bnREYXRhKGNvbnRlbnREYXRhKS0+aW1hZ2UoKSk7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBjcmVh
dGVSZW5kZXJlcjxSZW5kZXJJbWFnZT4oZWxlbWVudCwgc3RkOjptb3ZlKHN0eWxlKSwgc3R5bGVJ
bWFnZSk7CiAgICAgICAgIGlmIChzdHlsZUltYWdlKQogICAgICAgICAgICAgaW1hZ2UtPnNldElz
R2VuZXJhdGVkQ29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL0NvbnRlbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29u
dGVudERhdGEuaAppbmRleCA0ZDFiOTcxN2FjOTFhMjM3OWUzMWIwMzhjNWUzZDY3Y2IyODdkNjM1
Li43MGUyODI5NTUwNGU4ZDcwY2QwYjQ4ZDQxNWJmZGY5MzJmN2NhYzEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaApAQCAtNjUsNiArNjUsOSBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX2FsdFRleHQ7CiB9OwogCisjZGVmaW5lIENPTlRFTlRfREFU
QV9UWVBFX0NBU1RTKFRvQ2xhc3NOYW1lLCBGcm9tQ2xhc3NOYW1lLCBDb250ZW50RGF0YU5hbWUp
IFwKKyAgICBUWVBFX0NBU1RTX0JBU0UoVG9DbGFzc05hbWUsIEZyb21DbGFzc05hbWUsIHJlc291
cmNlLCByZXNvdXJjZS0+aXMjI0NvbnRlbnREYXRhTmFtZSgpLCByZXNvdXJjZS5pcyMjQ29udGVu
dERhdGFOYW1lKCkpCisKIGNsYXNzIEltYWdlQ29udGVudERhdGEgZmluYWwgOiBwdWJsaWMgQ29u
dGVudERhdGEgewogcHVibGljOgogICAgIGV4cGxpY2l0IEltYWdlQ29udGVudERhdGEoUGFzc1Jl
ZlB0cjxTdHlsZUltYWdlPiBpbWFnZSkKQEAgLTc5LDEyICs4Miw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihE
b2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENvbnRlbnREYXRhJiBkYXRhKSBjb25zdCBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgaWYgKCFkYXRhLmlzSW1hZ2UoKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBJbWFnZUNvbnRlbnREYXRh
Jj4oZGF0YSkuaW1hZ2UoKSA9PSAqaW1hZ2UoKTsKLSAgICB9CisgICAgdmlydHVhbCBib29sIGVx
dWFscyhjb25zdCBDb250ZW50RGF0YSYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29u
c3Qgb3ZlcnJpZGUKQEAgLTk3LDYgKzk1LDE1IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFN0eWxl
SW1hZ2U+IG1faW1hZ2U7CiB9OwogCitDT05URU5UX0RBVEFfVFlQRV9DQVNUUyhJbWFnZUNvbnRl
bnREYXRhLCBDb250ZW50RGF0YSwgSW1hZ2UpCisKK2lubGluZSBib29sIEltYWdlQ29udGVudERh
dGE6OmVxdWFscyhjb25zdCBDb250ZW50RGF0YSYgZGF0YSkgY29uc3QKK3sKKyAgICBpZiAoIWRh
dGEuaXNJbWFnZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICp0b0ltYWdl
Q29udGVudERhdGEoZGF0YSkuaW1hZ2UoKSA9PSAqaW1hZ2UoKTsKK30KKwogY2xhc3MgVGV4dENv
bnRlbnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBUZXh0Q29udGVudERhdGEoY29uc3QgU3RyaW5nJiB0ZXh0KQpAQCAtMTEwLDEyICsxMTcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0
ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZXF1YWxzKGNvbnN0IENvbnRlbnREYXRhJiBkYXRh
KSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKCFkYXRhLmlzVGV4dCgpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
VGV4dENvbnRlbnREYXRhJj4oZGF0YSkudGV4dCgpID09IHRleHQoKTsKLSAgICB9CisgICAgdmly
dHVhbCBib29sIGVxdWFscyhjb25zdCBDb250ZW50RGF0YSYpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUlu
dGVybmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29u
dGVudERhdGE+KHRleHQoKSk7IH0KQEAgLTEyMyw2ICsxMjUsMTUgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV90ZXh0OwogfTsKIAorQ09OVEVOVF9EQVRBX1RZUEVfQ0FTVFMoVGV4dENvbnRlbnRE
YXRhLCBDb250ZW50RGF0YSwgVGV4dCkKKworaW5saW5lIGJvb2wgVGV4dENvbnRlbnREYXRhOjpl
cXVhbHMoY29uc3QgQ29udGVudERhdGEmIGRhdGEpIGNvbnN0Cit7CisgICAgaWYgKCFkYXRhLmlz
VGV4dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRvVGV4dENvbnRlbnRE
YXRhKGRhdGEpLnRleHQoKSA9PSB0ZXh0KCk7Cit9CisKIGNsYXNzIENvdW50ZXJDb250ZW50RGF0
YSBmaW5hbCA6IHB1YmxpYyBDb250ZW50RGF0YSB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ291
bnRlckNvbnRlbnREYXRhKHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4gY291bnRlcikK
QEAgLTE0MywxNiArMTU0LDIwIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPENvdW50ZXJDb250ZW50RGF0YT4oc3RkOjptb3ZlKGNvdW50ZXJEYXRhKSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDb250ZW50RGF0YSYgZGF0YSkgY29u
c3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICghZGF0YS5pc0NvdW50ZXIoKSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBD
b3VudGVyQ29udGVudERhdGEmPihkYXRhKS5jb3VudGVyKCkgPT0gKmNvdW50ZXIoKTsKLSAgICB9
CisgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDb250ZW50RGF0YSYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENvdW50ZXJDb250ZW50PiBtX2NvdW50ZXI7CiB9
OwogCitDT05URU5UX0RBVEFfVFlQRV9DQVNUUyhDb3VudGVyQ29udGVudERhdGEsIENvbnRlbnRE
YXRhLCBDb3VudGVyKQorCitpbmxpbmUgYm9vbCBDb3VudGVyQ29udGVudERhdGE6OmVxdWFscyhj
b25zdCBDb250ZW50RGF0YSYgZGF0YSkgY29uc3QKK3sKKyAgICBpZiAoIWRhdGEuaXNDb3VudGVy
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gKnRvQ291bnRlckNvbnRlbnRE
YXRhKGRhdGEpLmNvdW50ZXIoKSA9PSAqY291bnRlcigpOworfQorCiBjbGFzcyBRdW90ZUNvbnRl
bnREYXRhIGZpbmFsIDogcHVibGljIENvbnRlbnREYXRhIHsKIHB1YmxpYzoKICAgICBleHBsaWNp
dCBRdW90ZUNvbnRlbnREYXRhKFF1b3RlVHlwZSBxdW90ZSkKQEAgLTE2NiwxMiArMTgxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1F1b3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29u
dGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ29udGVudERhdGEmIGRhdGEpIGNv
bnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoIWRhdGEuaXNRdW90ZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgUXVv
dGVDb250ZW50RGF0YSY+KGRhdGEpLnF1b3RlKCkgPT0gcXVvdGUoKTsKLSAgICB9CisgICAgdmly
dHVhbCBib29sIGVxdWFscyhjb25zdCBDb250ZW50RGF0YSYpIGNvbnN0IG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUlu
dGVybmFsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxRdW90ZUNv
bnRlbnREYXRhPihxdW90ZSgpKTsgfQpAQCAtMTc5LDYgKzE4OSwxNSBAQCBwcml2YXRlOgogICAg
IFF1b3RlVHlwZSBtX3F1b3RlOwogfTsKIAorQ09OVEVOVF9EQVRBX1RZUEVfQ0FTVFMoUXVvdGVD
b250ZW50RGF0YSwgQ29udGVudERhdGEsIFF1b3RlKQorCitpbmxpbmUgYm9vbCBRdW90ZUNvbnRl
bnREYXRhOjplcXVhbHMoY29uc3QgQ29udGVudERhdGEmIGRhdGEpIGNvbnN0Cit7CisgICAgaWYg
KCFkYXRhLmlzUXVvdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0b1F1
b3RlQ29udGVudERhdGEoZGF0YSkucXVvdGUoKSA9PSBxdW90ZSgpOworfQorCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IENvbnRlbnREYXRhJiBhLCBjb25zdCBDb250ZW50RGF0YSYgYikK
IHsKICAgICByZXR1cm4gYS5lcXVhbHMoYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBhMWYxZGZkZDZiMTMzYjhmYzkyZTk4ZmMzM2Vh
NzVlNTI1YzE3NjRjLi40NTBkYTI5ZDFmYmNhNWQ1YTkzMDg0MDgyZDc2YzQxNjA0NWNmZjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAg
LTg5Myw3ICs4OTMsNyBAQCB2b2lkIFJlbmRlclN0eWxlOjpzZXRDb250ZW50KGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBib29sIGFkZCkKICAgICAgICAgaWYgKGxhc3RDb250ZW50KSB7CiAgICAgICAg
ICAgICAvLyBXZSBhdHRlbXB0IHRvIG1lcmdlIHdpdGggdGhlIGxhc3QgQ29udGVudERhdGEgaWYg
cG9zc2libGUuCiAgICAgICAgICAgICBpZiAobGFzdENvbnRlbnQtPmlzVGV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgVGV4dENvbnRlbnREYXRhKiB0ZXh0Q29udGVudCA9IHN0YXRpY19jYXN0PFRl
eHRDb250ZW50RGF0YSo+KGxhc3RDb250ZW50KTsKKyAgICAgICAgICAgICAgICBUZXh0Q29udGVu
dERhdGEqIHRleHRDb250ZW50ID0gdG9UZXh0Q29udGVudERhdGEobGFzdENvbnRlbnQpOwogICAg
ICAgICAgICAgICAgIHRleHRDb250ZW50LT5zZXRUZXh0KHRleHRDb250ZW50LT50ZXh0KCkgKyBz
dHJpbmcpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbGFzdENvbnRlbnQt
PnNldE5leHQoc3RkOjptYWtlX3VuaXF1ZTxUZXh0Q29udGVudERhdGE+KHN0cmluZykpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>