<?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>128671</bug_id>
          
          <creation_ts>2014-02-12 04:39:34 -0800</creation_ts>
          <short_desc>CounterContentData::counter() and ImageContentData::image() should return references</short_desc>
          <delta_ts>2022-02-27 23:15:45 -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>128915</blocked>
    
    <blocked>129021</blocked>
          <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>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</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>979838</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-12 04:39:34 -0800</bug_when>
    <thetext>CounterContentData::counter() and ImageContentData::image() should return references.

Follow-up to Darin&apos;s comment in Bug 128538 Comment #3:

(In reply to bug 128538 comment #3)
&gt; (From update of attachment 223726 [details])
&gt; &gt; Source/WebCore/rendering/style/ContentData.h:160
&gt; &gt;      const CounterContent* counter() const { return m_counter.get(); }
&gt; 
&gt; Seems like this should return a reference rather than a pointer, unless it can be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979884</commentid>
    <comment_count>1</comment_count>
      <attachid>223975</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-12 09:42:52 -0800</bug_when>
    <thetext>Created attachment 223975
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979922</commentid>
    <comment_count>2</comment_count>
      <attachid>223975</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-12 11:02:41 -0800</bug_when>
    <thetext>Comment on attachment 223975
Patch v1

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

&gt; Source/WebCore/rendering/style/ContentData.h:94
&gt;      void setImage(PassRefPtr&lt;StyleImage&gt; image) { m_image = image; }

Is this function ever used in a way that makes m_image null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980065</commentid>
    <comment_count>3</comment_count>
      <attachid>223975</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-12 16:12:03 -0800</bug_when>
    <thetext>Comment on attachment 223975
Patch v1

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1408
&gt; +            const CounterContent&amp; counter = toCounterContentData(contentData)-&gt;counter();
&gt; +            list.get().append(cssValuePool().createValue(counter.identifier(), CSSPrimitiveValue::CSS_COUNTER_NAME));

Why not auto&amp;?

Maybe drop the local variable entirely and do this in a single line?

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1411
&gt; +            const StyleImage&amp; image = toImageContentData(contentData)-&gt;image();
&gt; +            list.get().append(image.cssValue());

Why not auto&amp;?

Maybe drop the local variable entirely and do this in a single line?

&gt; Source/WebCore/css/StyleResolver.cpp:3552
&gt; +                        RefPtr&lt;StyleImage&gt; loadedImage = loadPendingImage(static_cast&lt;StylePendingImage*&gt;(const_cast&lt;StyleImage*&gt;(&amp;image)));

This const cast is ugly.

Separate point: Can we add checked casts for StyleImage?

&gt; Source/WebCore/rendering/RenderElement.cpp:135
&gt; +        const StyleImage&amp; styleImage = toImageContentData(contentData)-&gt;image();

Why not auto&amp;?

&gt; Source/WebCore/rendering/style/ContentData.h:93
&gt; +    const StyleImage&amp; image() const { return *m_image; }

Why did you get rid of the const overload?

&gt;&gt; Source/WebCore/rendering/style/ContentData.h:94
&gt;&gt;      void setImage(PassRefPtr&lt;StyleImage&gt; image) { m_image = image; }
&gt; 
&gt; Is this function ever used in a way that makes m_image null?

Probably should add an assertion here too, as in the constructor and consider changing to PassRef maybe?

&gt; Source/WebCore/rendering/style/ContentData.h:156
&gt;      }

We should assert m_counter.

&gt; Source/WebCore/rendering/style/ContentData.h:159
&gt;      void setCounter(std::unique_ptr&lt;CounterContent&gt; counter) { m_counter = std::move(counter); }

We should assert counter (before) or m_counter (after).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980146</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-12 19:53:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 223975 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=223975&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1408
&gt; &gt; +            const CounterContent&amp; counter = toCounterContentData(contentData)-&gt;counter();
&gt; &gt; +            list.get().append(cssValuePool().createValue(counter.identifier(), CSSPrimitiveValue::CSS_COUNTER_NAME));
&gt; 
&gt; Why not auto&amp;?

Ahh, I didn&apos;t realize one had to use &apos;auto&amp;&apos; for a reference.  I&apos;ll switch them back.

&gt; Maybe drop the local variable entirely and do this in a single line?

I don&apos;t think it improves readability to make this long line even longer.

&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1411
&gt; &gt; +            const StyleImage&amp; image = toImageContentData(contentData)-&gt;image();
&gt; &gt; +            list.get().append(image.cssValue());
&gt; 
&gt; Why not auto&amp;?

Will fix.

&gt; Maybe drop the local variable entirely and do this in a single line?

This line still seems readable as one line.

&gt; &gt; Source/WebCore/css/StyleResolver.cpp:3552
&gt; &gt; +                        RefPtr&lt;StyleImage&gt; loadedImage = loadPendingImage(static_cast&lt;StylePendingImage*&gt;(const_cast&lt;StyleImage*&gt;(&amp;image)));
&gt; 
&gt; This const cast is ugly.

It gets cleaned up in a subsequent patch that makes loadPendingImage() take a reference.

&gt; Separate point: Can we add checked casts for StyleImage?

I have a follow-up patch to add the checked casts for StyleImage, but it currently depends on this patch.

&gt; &gt; Source/WebCore/rendering/RenderElement.cpp:135
&gt; &gt; +        const StyleImage&amp; styleImage = toImageContentData(contentData)-&gt;image();
&gt; 
&gt; Why not auto&amp;?

Will fix.

&gt; &gt; Source/WebCore/rendering/style/ContentData.h:93
&gt; &gt; +    const StyleImage&amp; image() const { return *m_image; }
&gt; 
&gt; Why did you get rid of the const overload?

It didn&apos;t really add anything.  (As noted above, the const cast goes away in a future patch.)

&gt; &gt;&gt; Source/WebCore/rendering/style/ContentData.h:94
&gt; &gt;&gt;      void setImage(PassRefPtr&lt;StyleImage&gt; image) { m_image = image; }
&gt; &gt; 
&gt; &gt; Is this function ever used in a way that makes m_image null?
&gt; 
&gt; Probably should add an assertion here too, as in the constructor and consider changing to PassRef maybe?

Good point.  Will add.

&gt; &gt; Source/WebCore/rendering/style/ContentData.h:156
&gt; &gt;      }
&gt; 
&gt; We should assert m_counter.

Will add.

&gt; &gt; Source/WebCore/rendering/style/ContentData.h:159
&gt; &gt;      void setCounter(std::unique_ptr&lt;CounterContent&gt; counter) { m_counter = std::move(counter); }
&gt; 
&gt; We should assert counter (before) or m_counter (after).

Will add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981493</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-17 09:13:27 -0800</bug_when>
    <thetext>Committed r164224: &lt;http://trac.webkit.org/changeset/164224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981511</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-17 09:50:56 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Separate point: Can we add checked casts for StyleImage?
&gt; 
&gt; I have a follow-up patch to add the checked casts for StyleImage, but it currently depends on this patch.

Bug 128915</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982212</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-18 20:12:39 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 223975 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=223975&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/StyleResolver.cpp:3552
&gt; &gt; &gt; +                        RefPtr&lt;StyleImage&gt; loadedImage = loadPendingImage(static_cast&lt;StylePendingImage*&gt;(const_cast&lt;StyleImage*&gt;(&amp;image)));
&gt; &gt; 
&gt; &gt; This const cast is ugly.
&gt; 
&gt; It gets cleaned up in a subsequent patch that makes loadPendingImage() take a reference.

Bug 129021</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223975</attachid>
            <date>2014-02-12 09:42:52 -0800</date>
            <delta_ts>2022-02-27 23:15:45 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-128671-20140212094251.patch</filename>
            <type>text/plain</type>
            <size>8485</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzVkZDEwNTI1MjkyMjMy
NTMzNmQwZGVmNmM3ZjY3OWUzZWQ2YTYzZS4uZGRkMTA2N2Q4MDEyZDI0ZDJhZGJhMWQ5NWZhZDg0
YWU4NTc3MmFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTAyLTEyICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAgICAgICAgQ291bnRlckNvbnRlbnRE
YXRhOjpjb3VudGVyKCkgYW5kIEltYWdlQ29udGVudERhdGE6OmltYWdlKCkgc2hvdWxkIHJldHVy
biByZWZlcmVuY2VzCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyODY3MT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGVudFRvQ1NT
VmFsdWUpOgorICAgICAgICAtIFVwZGF0ZSB0byB1c2UgcmVmZXJlbmNlcy4gIFJlbW92ZSB1c2Vs
ZXNzIEFTU0VSVHMuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ0ltYWdlcyk6CisgICAgICAgIC0g
VXBkYXRlIHRvIHVzZSByZWZlcmVuY2VzLiAgU3R5bGVSZXNvbHZlcjo6bG9hZFBlbmRpbmdJbWFn
ZSgpCisgICAgICAgICAgd2lsbCBiZSBjaGFuZ2VkIHRvIHRha2UgYSByZWZlcmVuY2UgaW4gdGhl
IG5lYXIgZnV0dXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6Y3JlYXRlRm9yKToKKyAgICAgICAgLSBV
cGRhdGUgdG8gdXNlIHJlZmVyZW5jZXMuICBUaGUgYXV0byBrZXl3b3JkIHdhbnRlZCB0bworICAg
ICAgICAgIGluc3RhbnRpYXRlIGEgU3R5bGVJbWFnZSBpbnN0ZWFkIGEgcmVmZXJlbmNlLCBzbyBp
dCB3YXMKKyAgICAgICAgICByZXBsYWNlZC4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250ZW50RGF0YTo6SW1hZ2VD
b250ZW50RGF0YSk6IEFkZCBBU1NFUlQgdGhhdAorICAgICAgICBtX2ltYWdlIGlzIG5vdCBOVUxM
LgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250ZW50RGF0YTo6aW1hZ2UpOiBSZXR1cm4gYSBy
ZWZlcmVuY2UuICBSZW1vdmUKKyAgICAgICAgdXNlbGVzcyBvdmVybG9hZCB3aXRoIGlkZW50aWNh
bCBuYW1lLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDb250ZW50RGF0YTo6Y2xvbmVJbnRlcm5h
bCk6IFNpbXBsaWZ5IGJ5IHVzaW5nCisgICAgICAgIGltcGxpY2l0IFBhc3NSZWZQdHIgY29uc3Ry
dWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KTogUmVtb3ZlIHVubmVlZGVkIGRl
cmVmIG9wZXJhdG9ycy4KKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJDb250ZW50RGF0YTo6Y291
bnRlcik6IFJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJDb250
ZW50RGF0YTo6Y2xvbmVJbnRlcm5hbCk6IFJlbW92ZSB1bm5lZWRlZAorICAgICAgICBkZXJlZiBv
cGVyYXRvci4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOiBSZW1vdmUgdW5uZWVkZWQg
ZGVyZWYgb3BlcmF0b3JzLgorCiAyMDE0LTAyLTExICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29udGVudERhdGEgZXF1YWxzKCkgbWV0aG9kcyBhcmUgbm90
IGlubGluZS1hYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDE4YTBhYjE0N2YxZDQ1ZjBiNDdhZWIzZWY3NTYyZDkyMTkx
OWIxYWMuLjE3Y2MzMjM0MTZhYWI4NzhjOWNmZTc1ZjM3MDY4ZDhhYzRhZDEzY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0xNDA0LDEzICsxNDA0LDExIEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gY29udGVu
dFRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGNvbnN0IENvbnRl
bnREYXRhKiBjb250ZW50RGF0YSA9IHN0eWxlLT5jb250ZW50RGF0YSgpOyBjb250ZW50RGF0YTsg
Y29udGVudERhdGEgPSBjb250ZW50RGF0YS0+bmV4dCgpKSB7CiAgICAgICAgIGlmIChjb250ZW50
RGF0YS0+aXNDb3VudGVyKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IENvdW50ZXJDb250ZW50KiBj
b3VudGVyID0gdG9Db3VudGVyQ29udGVudERhdGEoY29udGVudERhdGEpLT5jb3VudGVyKCk7Ci0g
ICAgICAgICAgICBBU1NFUlQoY291bnRlcik7Ci0gICAgICAgICAgICBsaXN0LmdldCgpLmFwcGVu
ZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShjb3VudGVyLT5pZGVudGlmaWVyKCksIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfQ09VTlRFUl9OQU1FKSk7CisgICAgICAgICAgICBjb25zdCBDb3Vu
dGVyQ29udGVudCYgY291bnRlciA9IHRvQ291bnRlckNvbnRlbnREYXRhKGNvbnRlbnREYXRhKS0+
Y291bnRlcigpOworICAgICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sKCku
Y3JlYXRlVmFsdWUoY291bnRlci5pZGVudGlmaWVyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
Q09VTlRFUl9OQU1FKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoY29udGVudERhdGEtPmlzSW1hZ2Uo
KSkgewotICAgICAgICAgICAgY29uc3QgU3R5bGVJbWFnZSogaW1hZ2UgPSB0b0ltYWdlQ29udGVu
dERhdGEoY29udGVudERhdGEpLT5pbWFnZSgpOwotICAgICAgICAgICAgQVNTRVJUKGltYWdlKTsK
LSAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGltYWdlLT5jc3NWYWx1ZSgpKTsKKyAgICAg
ICAgICAgIGNvbnN0IFN0eWxlSW1hZ2UmIGltYWdlID0gdG9JbWFnZUNvbnRlbnREYXRhKGNvbnRl
bnREYXRhKS0+aW1hZ2UoKTsKKyAgICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGltYWdlLmNz
c1ZhbHVlKCkpOwogICAgICAgICB9IGVsc2UgaWYgKGNvbnRlbnREYXRhLT5pc1RleHQoKSkKICAg
ICAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHRv
VGV4dENvbnRlbnREYXRhKGNvbnRlbnREYXRhKS0+dGV4dCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRl
eCAyY2VjZjdjYmJlMDYwZTU3NmMzYjU5NWU2OWZkMGM2OGRkYzEyMjNmLi4zNTYxYWMwZmVkNjdl
YWNiMDc2YzE1NDc1Yjc3YTFiNjU5ZDc0OGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwCkBAIC0zNTQ3LDkgKzM1NDcsOSBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmxvYWRQZW5k
aW5nSW1hZ2VzKCkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbnRlbnQ6IHsKICAgICAgICAg
ICAgIGZvciAoQ29udGVudERhdGEqIGNvbnRlbnREYXRhID0gY29uc3RfY2FzdDxDb250ZW50RGF0
YSo+KG1fc3RhdGUuc3R5bGUoKS0+Y29udGVudERhdGEoKSk7IGNvbnRlbnREYXRhOyBjb250ZW50
RGF0YSA9IGNvbnRlbnREYXRhLT5uZXh0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoY29udGVu
dERhdGEtPmlzSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgICAgICBTdHlsZUltYWdlKiBpbWFn
ZSA9IHRvSW1hZ2VDb250ZW50RGF0YShjb250ZW50RGF0YSktPmltYWdlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChpbWFnZS0+aXNQZW5kaW5nSW1hZ2UoKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGxvYWRlZEltYWdlID0gbG9hZFBlbmRpbmdJbWFn
ZShzdGF0aWNfY2FzdDxTdHlsZVBlbmRpbmdJbWFnZSo+KGltYWdlKSk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFN0eWxlSW1hZ2UmIGltYWdlID0gdG9JbWFnZUNvbnRlbnREYXRhKGNvbnRl
bnREYXRhKS0+aW1hZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlLmlzUGVuZGlu
Z0ltYWdlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxTdHlsZUltYWdlPiBs
b2FkZWRJbWFnZSA9IGxvYWRQZW5kaW5nSW1hZ2Uoc3RhdGljX2Nhc3Q8U3R5bGVQZW5kaW5nSW1h
Z2UqPihjb25zdF9jYXN0PFN0eWxlSW1hZ2UqPigmaW1hZ2UpKSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobG9hZGVkSW1hZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9J
bWFnZUNvbnRlbnREYXRhKGNvbnRlbnREYXRhKS0+c2V0SW1hZ2UobG9hZGVkSW1hZ2UucmVsZWFz
ZSgpKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCmluZGV4IGRlMjFiZDMyY2NiMDRjMTMxNDMyMGRhM2M1MDFkMGQyZjQ2
NzU5NzcuLjhiYWY5NDZlZjgzN2NmNzdmZWUzMTM1ZjFkZDk4YzY1YTkzMWU4YzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTEzMiwxMCArMTMyLDkg
QEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFJlbmRlckVsZW1lbnQ6OmNyZWF0ZUZvcihFbGVt
ZW50JiBlbGVtZW50LCBQYXNzUmVmPFJlbmQKICAgICAvLyBPdGhlcndpc2UgYWN0cyBhcyBpZiB3
ZSBkaWRuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUuCiAgICAgY29uc3QgQ29udGVudERhdGEqIGNv
bnRlbnREYXRhID0gc3R5bGUuZ2V0KCkuY29udGVudERhdGEoKTsKICAgICBpZiAoY29udGVudERh
dGEgJiYgIWNvbnRlbnREYXRhLT5uZXh0KCkgJiYgY29udGVudERhdGEtPmlzSW1hZ2UoKSAmJiAh
ZWxlbWVudC5pc1BzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICBhdXRvIHN0eWxlSW1hZ2UgPSBj
b25zdF9jYXN0PFN0eWxlSW1hZ2UqPih0b0ltYWdlQ29udGVudERhdGEoY29udGVudERhdGEpLT5p
bWFnZSgpKTsKLSAgICAgICAgYXV0byBpbWFnZSA9IGNyZWF0ZVJlbmRlcmVyPFJlbmRlckltYWdl
PihlbGVtZW50LCBzdGQ6Om1vdmUoc3R5bGUpLCBzdHlsZUltYWdlKTsKLSAgICAgICAgaWYgKHN0
eWxlSW1hZ2UpCi0gICAgICAgICAgICBpbWFnZS0+c2V0SXNHZW5lcmF0ZWRDb250ZW50KCk7Cisg
ICAgICAgIGNvbnN0IFN0eWxlSW1hZ2UmIHN0eWxlSW1hZ2UgPSB0b0ltYWdlQ29udGVudERhdGEo
Y29udGVudERhdGEpLT5pbWFnZSgpOworICAgICAgICBhdXRvIGltYWdlID0gY3JlYXRlUmVuZGVy
ZXI8UmVuZGVySW1hZ2U+KGVsZW1lbnQsIHN0ZDo6bW92ZShzdHlsZSksIGNvbnN0X2Nhc3Q8U3R5
bGVJbWFnZSo+KCZzdHlsZUltYWdlKSk7CisgICAgICAgIGltYWdlLT5zZXRJc0dlbmVyYXRlZENv
bnRlbnQoKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bW92ZShpbWFnZSk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29udGVudERhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oCmluZGV4IDkyMGRlN2Jh
YzYxNDE3ZjM0ZDhkOThjZjBmMTA2ZDk3ZmUyMTRhOWIuLjZiNTdiZmM5NjI0NjVjNGJhMjBiNWIw
OTdlMmJlNDM4NjcwNTkyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db250ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b250ZW50RGF0YS5oCkBAIC04NywxMCArODcsMTAgQEAgcHVibGljOgogICAgICAgICA6IENvbnRl
bnREYXRhKEltYWdlRGF0YVR5cGUpCiAgICAgICAgICwgbV9pbWFnZShpbWFnZSkKICAgICB7Cisg
ICAgICAgIEFTU0VSVChtX2ltYWdlKTsKICAgICB9CiAKLSAgICBjb25zdCBTdHlsZUltYWdlKiBp
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KLSAgICBTdHlsZUltYWdlKiBp
bWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAgICBjb25zdCBTdHlsZUltYWdlJiBp
bWFnZSgpIGNvbnN0IHsgcmV0dXJuICptX2ltYWdlOyB9CiAgICAgdm9pZCBzZXRJbWFnZShQYXNz
UmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQogCiAgICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVuZGVyZXIoRG9jdW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwpAQCAtOTgsOSArOTgsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRE
YXRhPiBjbG9uZUludGVybmFsKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIFJlZlB0
cjxTdHlsZUltYWdlPiBpbWFnZSA9IGNvbnN0X2Nhc3Q8U3R5bGVJbWFnZSo+KHRoaXMtPmltYWdl
KCkpOwotCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+
KGltYWdlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEltYWdl
Q29udGVudERhdGE+KG1faW1hZ2UuZ2V0KCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxTdHlsZUlt
YWdlPiBtX2ltYWdlOwpAQCAtMTEwLDcgKzEwOCw3IEBAIENPTlRFTlRfREFUQV9UWVBFX0NBU1RT
KEltYWdlQ29udGVudERhdGEsIENvbnRlbnREYXRhLCBJbWFnZSkKIAogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBJbWFnZUNvbnRlbnREYXRhJiBhLCBjb25zdCBJbWFnZUNvbnRlbnREYXRh
JiBiKQogewotICAgIHJldHVybiAqYS5pbWFnZSgpID09ICpiLmltYWdlKCk7CisgICAgcmV0dXJu
IGEuaW1hZ2UoKSA9PSBiLmltYWdlKCk7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgSW1hZ2VDb250ZW50RGF0YSYgYSwgY29uc3QgSW1hZ2VDb250ZW50RGF0YSYgYikKQEAgLTE1
Nyw3ICsxNTUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IENvdW50ZXJD
b250ZW50KiBjb3VudGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb3VudGVyLmdldCgpOyB9CisgICAg
Y29uc3QgQ291bnRlckNvbnRlbnQmIGNvdW50ZXIoKSBjb25zdCB7IHJldHVybiAqbV9jb3VudGVy
OyB9CiAgICAgdm9pZCBzZXRDb3VudGVyKHN0ZDo6dW5pcXVlX3B0cjxDb3VudGVyQ29udGVudD4g
Y291bnRlcikgeyBtX2NvdW50ZXIgPSBzdGQ6Om1vdmUoY291bnRlcik7IH0KIAogICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50
JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKQEAgLTE2NSw3ICsxNjMsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRE
YXRhPiBjbG9uZUludGVybmFsKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGF1dG8g
Y291bnRlckRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENvdW50ZXJDb250ZW50PigqY291bnRlcigp
KTsKKyAgICAgICAgYXV0byBjb3VudGVyRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q291bnRlckNv
bnRlbnQ+KGNvdW50ZXIoKSk7CiAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENvdW50
ZXJDb250ZW50RGF0YT4oc3RkOjptb3ZlKGNvdW50ZXJEYXRhKSk7CiAgICAgfQogCkBAIC0xNzYs
NyArMTc0LDcgQEAgQ09OVEVOVF9EQVRBX1RZUEVfQ0FTVFMoQ291bnRlckNvbnRlbnREYXRhLCBD
b250ZW50RGF0YSwgQ291bnRlcikKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3Vu
dGVyQ29udGVudERhdGEmIGEsIGNvbnN0IENvdW50ZXJDb250ZW50RGF0YSYgYikKIHsKLSAgICBy
ZXR1cm4gKmEuY291bnRlcigpID09ICpiLmNvdW50ZXIoKTsKKyAgICByZXR1cm4gYS5jb3VudGVy
KCkgPT0gYi5jb3VudGVyKCk7CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgQ291
bnRlckNvbnRlbnREYXRhJiBhLCBjb25zdCBDb3VudGVyQ29udGVudERhdGEmIGIpCg==
</data>
<flag name="review"
          id="248055"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>