<?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>128043</bug_id>
          
          <creation_ts>2014-02-01 09:30:35 -0800</creation_ts>
          <short_desc>Remove CachedImageManual class</short_desc>
          <delta_ts>2022-02-28 03:43:50 -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>Page Loading</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>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>jeffrey+webkit</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>psolanki</cc>
    
    <cc>roger_fong</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974622</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-01 09:30:35 -0800</bug_when>
    <thetext>Remove the CachedImageManual class that was upstreamed for iOS by folding the functionality into CachedImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974623</commentid>
    <comment_count>1</comment_count>
      <attachid>222883</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-01 09:37:32 -0800</bug_when>
    <thetext>Created attachment 222883
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974708</commentid>
    <comment_count>2</comment_count>
      <attachid>222883</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-01 21:21:10 -0800</bug_when>
    <thetext>Comment on attachment 222883
Patch v1

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

&gt; Source/WebCore/loader/cache/CachedImage.cpp:100
&gt; +#if USE(CG)
&gt; +    if (UNLIKELY(isManuallyCached())) {
&gt; +        // Use the incoming URL in the response field. This ensures that code
&gt; +        // using the response directly, such as origin checks for security,
&gt; +        // actually see something.
&gt; +        m_response.setURL(url);
&gt; +    }
&gt; +#endif

I’m not sure I understand why the manually cached flag is unconditional, but this code is CG-only. I’d expect the two to be consistent. If ManuallyCached is temporarily not yet used in non-CG configurations, this code would still do no harm.

&gt; Source/WebCore/loader/cache/CachedImage.cpp:627
&gt; +// FIXME: Remove the USE(CG) once we make MemoryCache::addImageToCache() platform-independent.

Why do we have to wait? I don’t see any harm in making this code unconditional even if isManuallyCached() is going to be always false on platforms that have MemoryCache::addImageToCache() yet.

&gt; Source/WebCore/loader/cache/CachedImage.h:85
&gt; +#if USE(CG)
&gt; +    // FIXME: Remove the USE(CG) once we make MemoryCache::addImageToCache() platform-independent.

Same comment as above. Doesn’t seem that this needs to be conditional. Of if we do want it conditional, then the data member should also be conditional.

&gt; Source/WebCore/loader/cache/CachedImage.h:150
&gt; +    unsigned char m_isManuallyCached : 1;
&gt; +    unsigned char m_shouldPaintBrokenImage : 1;

Why unsigned char instead of unsigned for these bit fields?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974898</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-02 20:36:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 222883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222883&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:100
&gt; &gt; +#if USE(CG)
&gt; &gt; +    if (UNLIKELY(isManuallyCached())) {
&gt; &gt; +        // Use the incoming URL in the response field. This ensures that code
&gt; &gt; +        // using the response directly, such as origin checks for security,
&gt; &gt; +        // actually see something.
&gt; &gt; +        m_response.setURL(url);
&gt; &gt; +    }
&gt; &gt; +#endif
&gt; 
&gt; I’m not sure I understand why the manually cached flag is unconditional, but this code is CG-only. I’d expect the two to be consistent. If ManuallyCached is temporarily not yet used in non-CG configurations, this code would still do no harm.
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.cpp:627
&gt; &gt; +// FIXME: Remove the USE(CG) once we make MemoryCache::addImageToCache() platform-independent.
&gt; 
&gt; Why do we have to wait? I don’t see any harm in making this code unconditional even if isManuallyCached() is going to be always false on platforms that have MemoryCache::addImageToCache() yet.
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedImage.h:85
&gt; &gt; +#if USE(CG)
&gt; &gt; +    // FIXME: Remove the USE(CG) once we make MemoryCache::addImageToCache() platform-independent.
&gt; 
&gt; Same comment as above. Doesn’t seem that this needs to be conditional. Of if we do want it conditional, then the data member should also be conditional.

Okay, I&apos;ll remove the USE(CG) statements.  The only place it is truly needed is MemoryCache.cpp, so I&apos;ll leave it there.

&gt; &gt; Source/WebCore/loader/cache/CachedImage.h:150
&gt; &gt; +    unsigned char m_isManuallyCached : 1;
&gt; &gt; +    unsigned char m_shouldPaintBrokenImage : 1;
&gt; 
&gt; Why unsigned char instead of unsigned for these bit fields?

So that the bitfields would use 1 byte instead of 4 bytes since there were only 2 bitfields, and a bool only uses 1 byte.

Should I use &apos;unsigned&apos; instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974933</commentid>
    <comment_count>4</comment_count>
      <attachid>222883</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-02 23:18:26 -0800</bug_when>
    <thetext>Comment on attachment 222883
Patch v1

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

&gt;&gt;&gt; Source/WebCore/loader/cache/CachedImage.h:150
&gt;&gt;&gt; +    unsigned char m_shouldPaintBrokenImage : 1;
&gt;&gt; 
&gt;&gt; Why unsigned char instead of unsigned for these bit fields?
&gt; 
&gt; So that the bitfields would use 1 byte instead of 4 bytes since there were only 2 bitfields, and a bool only uses 1 byte.
&gt; 
&gt; Should I use &apos;unsigned&apos; instead?

I don’t think it works that way. If &quot;unsigned char&quot; actually makes the object smaller, that’s fine, but I believe that using “unsigned” does not have the effect of using 4 bytes instead of one when there are those two bit fields.

If it wasn’t for the strange Windows rule where it won’t combine bit fields of different types, I would say we should use “bool” here, but to accommodate Windows we should use “unsigned”. Unless it really does have the effect you say, and, if so, unsigned char is fine with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975936</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-03 11:10:29 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 222883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=222883&amp;action=review
&gt; 
&gt; I don’t think it works that way. If &quot;unsigned char&quot; actually makes the object smaller, that’s fine, but I believe that using “unsigned” does not have the effect of using 4 bytes instead of one when there are those two bit fields.

It does make a difference.

$ cat test_size.cpp
#include &lt;stdio.h&gt;

class A {
public:
    bool m_bool;
};

class B {
public:
    unsigned char m_a : 1;
    unsigned char m_b : 1;
};

class C {
public:
    unsigned m_a : 1;
    unsigned m_b : 1;
};

class D {
public:
    unsigned m_unsigned;
};

int main(int argc, char** argv)
{
    fprintf(stdout, &quot;sizeof(A) = %lu\n&quot;, sizeof(A));
    fprintf(stdout, &quot;sizeof(B) = %lu\n&quot;, sizeof(B));
    fprintf(stdout, &quot;sizeof(C) = %lu\n&quot;, sizeof(C));
    fprintf(stdout, &quot;sizeof(D) = %lu\n&quot;, sizeof(D));
    return 0;
}

$ clang -arch i386 -arch x86_64 -o test_size test_size.cpp
$ arch -arch i386 ./test_size
sizeof(A) = 1
sizeof(B) = 1
sizeof(C) = 4
sizeof(D) = 4
$ arch -arch x86_64 ./test_size
sizeof(A) = 1
sizeof(B) = 1
sizeof(C) = 4
sizeof(D) = 4

&gt; If it wasn’t for the strange Windows rule where it won’t combine bit fields of different types, I would say we should use “bool” here, but to accommodate Windows we should use “unsigned”. Unless it really does have the effect you say, and, if so, unsigned char is fine with me.

Roger/Brent: Was this Windows rule only true of the older MS Visual C++ compiler, or does this still apply to the current compiler?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975943</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-02-03 11:30:10 -0800</bug_when>
    <thetext>Committed r163318: &lt;http://trac.webkit.org/changeset/163318&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222883</attachid>
            <date>2014-02-01 09:37:32 -0800</date>
            <delta_ts>2022-02-28 03:43:50 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-128043-20140201093731.patch</filename>
            <type>text/plain</type>
            <size>11569</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y4MWNlZDcyZTgxOWE5
NDQ5Njc1MThmZmU1ZDU4ZmVjOTgwYzkyMi4uYTk4YzBkN2RmNTlkZGJlYTk4MzIyYWI5ZmE0NTI1
MDJhN2YxMDdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE0LTAyLTAxICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIENhY2hlZElt
YWdlTWFudWFsIGNsYXNzCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEyODA0Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgcmlkIG9m
IHRoZSBDYWNoZWRJbWFnZU1hbnVhbCBjbGFzcyBieSBpbmxpbmluZyBpdHMKKyAgICAgICAgZnVu
Y3Rpb25hbGl0eSBpbnRvIENhY2hlZEltYWdlLiAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0bwor
ICAgICAgICBkZS12aXJ0dWFsLWl6ZSBpc01hbnVhbCgpIChyZW5hbWVkIHRvIGlzTWFudWFsbHlD
YWNoZWQoKSkgYW5kIHRvCisgICAgICAgIG1ha2UgQ2FjaGVkSW1hZ2UgZmluYWwuICBUaGUgc2l6
ZSBvZiBDYWNoZWRJbWFnZSBkb2VzIG5vdAorICAgICAgICBpbmNyZWFzZSBiZWNhdXNlIHdlIHR1
cm4gYW4gZXhpc3RpbmcgYm9vbCBpbnRvIGEgYml0ZmllbGQgdG8gYWRkCisgICAgICAgIGFuIG1f
aXNNYW51YWxseUNhY2hlZCBiaXQsIGFuZCBjcmVhdGUgYSBzdGF0aWMgQ2FjaGVkSW1hZ2VDbGll
bnQKKyAgICAgICAgaW4gTWVtb3J5Q2FjaGUuY3BwIGFzIHRoZSAiZmFrZSIgY2xpZW50IHRvIGtl
ZXAgdGhlIG1hbnVhbGx5CisgICAgICAgIGNhY2hlZCBpbWFnZSBhbGl2ZSBpbiB0aGUgY2FjaGUu
CisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKTogU2V0IG1faXNNYW51YWxseUNhY2hlZAor
ICAgICAgICBiaXRmaWVsZC4gIEZvciBvbmUgb3ZlcmxvYWRlZCBjb25zdHJ1Y3RvciwgbW92ZSB0
aGUKKyAgICAgICAgQ2FjaGVkSW1hZ2VNYW51YWwgY29kZSBpbnRvIHRoZSBDYWNoZWRJbWFnZSBj
b25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlTWFudWFsOjpDYWNoZWRJ
bWFnZU1hbnVhbCk6IFJlbW92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjptdXN0
UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFkZXJzKTogTW92ZQorICAgICAgICBtZXRob2QgZnJvbSBD
YWNoZWRJbWFnZU1hbnVhbCB0byBDYWNoZWRJbWFnZSwgYW5kIHB1dAorICAgICAgICBNYW51YWxs
eUNhY2hlZCBiZWhhdmlvciBiZWhpbmQgYSBjaGVjay4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaDogVXBkYXRlIGluY2x1ZGVzLiAgTWFrZSBDYWNoZWRJbWFnZQorICAgICAg
ICBmaW5hbC4gIEFkZCBDYWNoZWRJbWFnZTo6Q2FjaGVCZWhhdmlvclR5cGUgZW51bSB3aGVuIG1h
bnVhbGx5CisgICAgICAgIGNhY2hlZCBpbWFnZXMgYXJlIGNyZWF0ZWQuICBNb3ZlIENhY2hlZElt
YWdlTWFudWFsIG1ldGhvZHMgaW50bworICAgICAgICBDYWNoZWRJbWFnZSwgcmVtb3ZlIGFkZEZh
a2VDbGllbnQoKSBhbmQgcmVtb3ZlRmFrZUNsaWVudCgpCisgICAgICAgIG1ldGhvZHMsIGFuZCBy
ZW1vdmUgdGhlIENhY2hlZEltYWdlTWFudWFsIGNsYXNzIGRlZmluaXRpb24uCisgICAgICAgIENo
YW5nZSBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgdG8gYSBiaXRmaWVsZCBhbmQgYWRkCisgICAg
ICAgIG1faXNNYW51YWxseUNhY2hlZCBiaXRmaWVsZC4KKworICAgICAgICAqIGxvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlDYWNoZTo6YWRkSW1h
Z2VUb0NhY2hlKTogVXNlIHN0ZDo6dW5pcXVlX3B0ciBhbmQKKyAgICAgICAgcmVtb3ZlIHVzZWxl
c3MgTlVMTCBjaGVjayBhZnRlciBjYWxsaW5nIENhY2hlZEltYWdlIGNvbnN0cnVjdG9yLgorICAg
ICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJvbUNhY2hlKToKKyAgICAg
ICAgLSBVcGRhdGUgdG8gdXNlIENhY2hlZEltYWdlIGNsYXNzIGluc3RlYWQgb2YgQ2FjaGVkSW1h
Z2VNYW51YWwuCisKKzIwMTQtMDItMDEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNv
bT4KKwogICAgICAgICBBZGQgc2VjdXJpdHktY2hlY2tlZCBjYXN0cyBmb3IgYWxsIFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlIHN1YmNsYXNzZXMKICAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTI3OTg4PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCA5MjI2MDE3YTcwNzdlZGNhMWY0ZjE0OTAzMzRjNDcwMGEwY2Y4MWQ3Li42NmNlMWY4ODE0
NmFmZjhjZWI1N2M2YmZlZGUzNzNmYzM1YmNkMzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTY2LDYgKzY2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0KQogICAgIDogQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBJbWFn
ZVJlc291cmNlKQogICAgICwgbV9pbWFnZSgwKQorICAgICwgbV9pc01hbnVhbGx5Q2FjaGVkKGZh
bHNlKQogICAgICwgbV9zaG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpCiB7CiAgICAgc2V0U3Rh
dHVzKFVua25vd24pOwpAQCAtNzQsMTkgKzc1LDI5IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFn
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKIENhY2hlZEltYWdlOjpD
YWNoZWRJbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgOiBDYWNoZWRSZXNvdXJjZShSZXNvdXJjZVJl
cXVlc3QoKSwgSW1hZ2VSZXNvdXJjZSkKICAgICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2lz
TWFudWFsbHlDYWNoZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1
ZSkKIHsKICAgICBzZXRTdGF0dXMoQ2FjaGVkKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKIH0K
IAotQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKGNvbnN0IFVSTCYgdXJsLCBJbWFnZSogaW1hZ2Up
CitDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgVVJMJiB1cmwsIEltYWdlKiBpbWFnZSwg
Q2FjaGVkSW1hZ2U6OkNhY2hlQmVoYXZpb3JUeXBlIHR5cGUpCiAgICAgOiBDYWNoZWRSZXNvdXJj
ZShSZXNvdXJjZVJlcXVlc3QodXJsKSwgSW1hZ2VSZXNvdXJjZSkKICAgICAsIG1faW1hZ2UoaW1h
Z2UpCisgICAgLCBtX2lzTWFudWFsbHlDYWNoZWQodHlwZSA9PSBDYWNoZWRJbWFnZTo6TWFudWFs
bHlDYWNoZWQpCiAgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKIHsKICAgICBz
ZXRTdGF0dXMoQ2FjaGVkKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKKyNpZiBVU0UoQ0cpCisg
ICAgaWYgKFVOTElLRUxZKGlzTWFudWFsbHlDYWNoZWQoKSkpIHsKKyAgICAgICAgLy8gVXNlIHRo
ZSBpbmNvbWluZyBVUkwgaW4gdGhlIHJlc3BvbnNlIGZpZWxkLiBUaGlzIGVuc3VyZXMgdGhhdCBj
b2RlCisgICAgICAgIC8vIHVzaW5nIHRoZSByZXNwb25zZSBkaXJlY3RseSwgc3VjaCBhcyBvcmln
aW4gY2hlY2tzIGZvciBzZWN1cml0eSwKKyAgICAgICAgLy8gYWN0dWFsbHkgc2VlIHNvbWV0aGlu
Zy4KKyAgICAgICAgbV9yZXNwb25zZS5zZXRVUkwodXJsKTsKKyAgICB9CisjZW5kaWYKIH0KIAog
Q2FjaGVkSW1hZ2U6On5DYWNoZWRJbWFnZSgpCkBAIC02MTIsMjggKzYyMywxOSBAQCBib29sIENh
Y2hlZEltYWdlOjppc09yaWdpbkNsZWFuKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikK
ICAgICByZXR1cm4gIXNlY3VyaXR5T3JpZ2luLT50YWludHNDYW52YXMocmVzcG9uc2UoKS51cmwo
KSk7CiB9CiAKLSNpZiBVU0UoQ0YpCi0vLyBGSVhNRTogV2Ugc2hvdWxkIGxvb2sgdG8gaW5jb3Jw
b3JhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgQ2FjaGVkSW1hZ2VNYW51YWwKLS8vIGludG8gQ2Fj
aGVkSW1hZ2Ugb3IgZmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhpcyBjbGFzcy4KLS8vIEZJWE1F
OiBSZW1vdmUgdGhlIFVTRShDRikgb25jZSB3ZSBtYWtlIE1lbW9yeUNhY2hlOjphZGRJbWFnZVRv
Q2FjaGUoKSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KLUNhY2hlZEltYWdlTWFudWFsOjpDYWNoZWRJ
bWFnZU1hbnVhbChjb25zdCBVUkwmIHVybCwgSW1hZ2UqIGltYWdlKQotICAgIDogQ2FjaGVkSW1h
Z2UodXJsLCBpbWFnZSkKLSAgICAsIG1fZmFrZUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPENhY2hl
ZEltYWdlQ2xpZW50PigpKQotewotICAgIC8vIFVzZSB0aGUgaW5jb21pbmcgVVJMIGluIHRoZSBy
ZXNwb25zZSBmaWVsZC4gVGhpcyBlbnN1cmVzIHRoYXQgY29kZQotICAgIC8vIHVzaW5nIHRoZSBy
ZXNwb25zZSBkaXJlY3RseSwgc3VjaCBhcyBvcmlnaW4gY2hlY2tzIGZvciBzZWN1cml0eSwKLSAg
ICAvLyBhY3R1YWxseSBzZWUgc29tZXRoaW5nLgotICAgIG1fcmVzcG9uc2Uuc2V0VVJMKHVybCk7
Ci19Ci0KLWJvb2wgQ2FjaGVkSW1hZ2VNYW51YWw6Om11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhl
YWRlcnMoQ2FjaGVQb2xpY3kpIGNvbnN0Ci17Ci0gICAgLy8gRG8gbm90IHJldmFsaWRhdGUgbWFu
dWFsbHkgY2FjaGVkIGltYWdlcy4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBhcyBhCi0gICAgLy8g
d2F5IHRvIGVmZmljaWVudGx5IHNoYXJlIGFuIGltYWdlIGZyb20gdGhlIGNsaWVudCB0byBjb250
ZW50IGFuZAotICAgIC8vIHRoZSBVUkwgZm9yIHRoYXQgaW1hZ2UgbWF5IG5vdCByZXByZXNlbnQg
YSByZXNvdXJjZSB0aGF0IGNhbiBiZQotICAgIC8vIHJldHJpZXZlZCBieSBzdGFuZGFyZCBtZWFu
cy4gSWYgdGhlIG1hbnVhbCBjYWNoaW5nIFNQSSBpcyB1c2VkLCBpdCBpcwotICAgIC8vIGluY3Vt
YmVudCBvbiB0aGUgY2xpZW50IHRvIG9ubHkgdXNlIHZhbGlkIHJlc291cmNlcy4KLSAgICByZXR1
cm4gZmFsc2U7CisjaWYgVVNFKENHKQorLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNFKENHKSBvbmNl
IHdlIG1ha2UgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9DYWNoZSgpIHBsYXRmb3JtLWluZGVwZW5k
ZW50LgorYm9vbCBDYWNoZWRJbWFnZTo6bXVzdFJldmFsaWRhdGVEdWVUb0NhY2hlSGVhZGVycyhD
YWNoZVBvbGljeSBwb2xpY3kpIGNvbnN0Cit7CisgICAgaWYgKFVOTElLRUxZKGlzTWFudWFsbHlD
YWNoZWQoKSkpIHsKKyAgICAgICAgLy8gRG8gbm90IHJldmFsaWRhdGUgbWFudWFsbHkgY2FjaGVk
IGltYWdlcy4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBhcyBhCisgICAgICAgIC8vIHdheSB0byBl
ZmZpY2llbnRseSBzaGFyZSBhbiBpbWFnZSBmcm9tIHRoZSBjbGllbnQgdG8gY29udGVudCBhbmQK
KyAgICAgICAgLy8gdGhlIFVSTCBmb3IgdGhhdCBpbWFnZSBtYXkgbm90IHJlcHJlc2VudCBhIHJl
c291cmNlIHRoYXQgY2FuIGJlCisgICAgICAgIC8vIHJldHJpZXZlZCBieSBzdGFuZGFyZCBtZWFu
cy4gSWYgdGhlIG1hbnVhbCBjYWNoaW5nIFNQSSBpcyB1c2VkLCBpdCBpcworICAgICAgICAvLyBp
bmN1bWJlbnQgb24gdGhlIGNsaWVudCB0byBvbmx5IHVzZSB2YWxpZCByZXNvdXJjZXMuCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIENhY2hlZFJlc291cmNlOjptdXN0
UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFkZXJzKHBvbGljeSk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCBiMGRjOGQwMDQyNWIyNWI0
MWE2MGYzNTdjM2QyYzE5YmVhY2Q2NTU5Li5jMjcyZjRmYjIwMTAzMWVkYjM3NzdmMWJlOTdiY2E0
NTIwY2NlZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApA
QCAtNDQsMTMgKzQ0LDE1IEBAIGNsYXNzIFNlY3VyaXR5T3JpZ2luOwogCiBzdHJ1Y3QgTGVuZ3Ro
OwogCi1jbGFzcyBDYWNoZWRJbWFnZSA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSwgcHVibGljIElt
YWdlT2JzZXJ2ZXIgeworY2xhc3MgQ2FjaGVkSW1hZ2UgZmluYWwgOiBwdWJsaWMgQ2FjaGVkUmVz
b3VyY2UsIHB1YmxpYyBJbWFnZU9ic2VydmVyIHsKICAgICBmcmllbmQgY2xhc3MgTWVtb3J5Q2Fj
aGU7CiAKIHB1YmxpYzoKKyAgICBlbnVtIENhY2hlQmVoYXZpb3JUeXBlIHsgQXV0b21hdGljYWxs
eUNhY2hlZCwgTWFudWFsbHlDYWNoZWQgfTsKKwogICAgIENhY2hlZEltYWdlKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwogICAgIENhY2hlZEltYWdlKEltYWdlKik7Ci0gICAgQ2FjaGVkSW1hZ2Uo
Y29uc3QgVVJMJiwgSW1hZ2UqKTsKKyAgICBDYWNoZWRJbWFnZShjb25zdCBVUkwmLCBJbWFnZSos
IENhY2hlQmVoYXZpb3JUeXBlID0gQXV0b21hdGljYWxseUNhY2hlZCk7CiAgICAgdmlydHVhbCB+
Q2FjaGVkSW1hZ2UoKTsKIAogICAgIEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5zIHRoZSBudWxs
SW1hZ2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCkBAIC03OSw5ICs4MSwx
MSBAQCBwdWJsaWM6CiAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemVGb3JSZW5kZXJlcihjb25zdCBS
ZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyLCBTaXplVHlwZSA9IFVzZWRTaXplKTsgLy8g
cmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgY29tcGxldGUgaW1hZ2UuCiAgICAgdm9pZCBjb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJp
bnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbyk7CiAKLSNpZiBVU0UoQ0YpCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgVVNFKENGKSBvbmNlIHdlIG1ha2UgTWVtb3J5Q2FjaGU6
OmFkZEltYWdlVG9DYWNoZSgpIHBsYXRmb3JtLWluZGVwZW5kZW50LgotICAgIHZpcnR1YWwgYm9v
bCBpc01hbnVhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjaWYgVVNFKENHKQorICAgIC8v
IEZJWE1FOiBSZW1vdmUgdGhlIFVTRShDRykgb25jZSB3ZSBtYWtlIE1lbW9yeUNhY2hlOjphZGRJ
bWFnZVRvQ2FjaGUoKSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KKyAgICBib29sIGlzTWFudWFsbHlD
YWNoZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWFudWFsbHlDYWNoZWQ7IH0KKworICAgIHZpcnR1
YWwgYm9vbCBtdXN0UmV2YWxpZGF0ZUR1ZVRvQ2FjaGVIZWFkZXJzKENhY2hlUG9saWN5KSBjb25z
dDsKICNlbmRpZgogCiAgICAgc3RhdGljIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2VzRm9yTG9h
ZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKik7CkBAIC0xNDIsMjkgKzE0NiwxMSBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShTVkcpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0ltYWdlQ2FjaGU+IG1f
c3ZnSW1hZ2VDYWNoZTsKICNlbmRpZgotICAgIGJvb2wgbV9zaG91bGRQYWludEJyb2tlbkltYWdl
OwotfTsKLQotI2lmIFVTRShDRikKLS8vIEZJWE1FOiBXZSBzaG91bGQgbG9vayB0byBpbmNvcnBv
cmF0ZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiBDYWNoZWRJbWFnZU1hbnVhbAotLy8gaW50byBDYWNo
ZWRJbWFnZSBvciBmaW5kIGEgYmV0dGVyIHBsYWNlIGZvciB0aGlzIGNsYXNzLgotLy8gRklYTUU6
IFJlbW92ZSB0aGUgVVNFKENGKSBvbmNlIHdlIG1ha2UgTWVtb3J5Q2FjaGU6OmFkZEltYWdlVG9D
YWNoZSgpIHBsYXRmb3JtLWluZGVwZW5kZW50LgotY2xhc3MgQ2FjaGVkSW1hZ2VNYW51YWwgZmlu
YWwgOiBwdWJsaWMgQ2FjaGVkSW1hZ2UgewotcHVibGljOgotICAgIENhY2hlZEltYWdlTWFudWFs
KGNvbnN0IFVSTCYsIEltYWdlKik7Ci0gICAgdm9pZCBhZGRGYWtlQ2xpZW50KCkgeyBhZGRDbGll
bnQobV9mYWtlQ2xpZW50LmdldCgpKTsgfQotICAgIHZvaWQgcmVtb3ZlRmFrZUNsaWVudCgpIHsg
cmVtb3ZlQ2xpZW50KG1fZmFrZUNsaWVudC5nZXQoKSk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNN
YW51YWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29s
IG11c3RSZXZhbGlkYXRlRHVlVG9DYWNoZUhlYWRlcnMoQ2FjaGVQb2xpY3kpIGNvbnN0OwotcHJp
dmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkUmVzb3VyY2VDbGllbnQ+IG1fZmFrZUNs
aWVudDsKKyAgICB1bnNpZ25lZCBjaGFyIG1faXNNYW51YWxseUNhY2hlZCA6IDE7CisgICAgdW5z
aWduZWQgY2hhciBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgOiAxOwogfTsKLSNlbmRpZgogCiBD
QUNIRURfUkVTT1VSQ0VfVFlQRV9DQVNUUyhDYWNoZWRJbWFnZSwgQ2FjaGVkUmVzb3VyY2UsIENh
Y2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlKQotI2lmIFVTRShDRikKLVRZUEVfQ0FTVFNfQkFT
RShDYWNoZWRJbWFnZU1hbnVhbCwgQ2FjaGVkSW1hZ2UsIHJlc291cmNlLCByZXNvdXJjZS0+aXNN
YW51YWwoKSwgcmVzb3VyY2UuaXNNYW51YWwoKSkKLSNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCmluZGV4IGVmMDEyOThhYTgxOTY0NjRj
YWE5ODgxOTdkMjQzMzA3MGE3ZTI1OTIuLjAxYWQ1YjVkMjU3M2Y2ZGFmZjJjZjMwOTRlZjEwMWUy
MWYwNjQ5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNw
cApAQCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRl
ICJDYWNoZWRJbWFnZS5oIgorI2luY2x1ZGUgIkNhY2hlZEltYWdlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgog
I2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFzay5oIgpAQCAtMjE1LDYgKzIxNiwxMiBAQCB1bnNpZ25l
ZCBNZW1vcnlDYWNoZTo6bGl2ZUNhcGFjaXR5KCkgY29uc3QKICNpZiBVU0UoQ0cpCiAvLyBGSVhN
RTogUmVtb3ZlIHRoZSBVU0UoQ0cpIG9uY2Ugd2UgZWl0aGVyIG1ha2UgTmF0aXZlSW1hZ2VQdHIg
YSBzbWFydCBwb2ludGVyIG9uIGFsbCBwbGF0Zm9ybXMgb3IKIC8vIHJlbW92ZSB0aGUgdXNhZ2Ug
b2YgQ0ZSZXRhaW4oKSBpbiBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKCkgc28gYXMgdG8g
bWFrZSB0aGUgY29kZSBwbGF0Zm9ybS1pbmRlcGVuZGVudC4KK3N0YXRpYyBDYWNoZWRJbWFnZUNs
aWVudCYgZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDYWNoZWRJbWFnZUNsaWVudCwgY2xpZW50LCAoKSk7CisgICAgcmV0dXJuIGNsaWVudDsKK30K
KwogYm9vbCBNZW1vcnlDYWNoZTo6YWRkSW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdl
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjYWNoZVBhcnRpdGlvbikKIHsKICAgICBB
U1NFUlQoaW1hZ2UpOwpAQCAtMjI0LDE4ICsyMzEsMTYgQEAgYm9vbCBNZW1vcnlDYWNoZTo6YWRk
SW1hZ2VUb0NhY2hlKE5hdGl2ZUltYWdlUHRyIGltYWdlLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3QKICAgICBpZiAoIWJpdG1hcEltYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBD
YWNoZWRJbWFnZU1hbnVhbCogY2FjaGVkSW1hZ2UgPSBuZXcgQ2FjaGVkSW1hZ2VNYW51YWwodXJs
LCBiaXRtYXBJbWFnZS5nZXQoKSk7Ci0gICAgaWYgKCFjYWNoZWRJbWFnZSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRJbWFnZT4gY2FjaGVkSW1hZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hlZEltYWdlPih1cmwsIGJpdG1hcEltYWdlLmdldCgpLCBD
YWNoZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQpOwogCiAgICAgLy8gQWN0dWFsIHJlbGVhc2Ugb2Yg
dGhlIENHSW1hZ2VSZWYgaXMgZG9uZSBpbiBCaXRtYXBJbWFnZS4KICAgICBDRlJldGFpbihpbWFn
ZSk7Ci0gICAgY2FjaGVkSW1hZ2UtPmFkZEZha2VDbGllbnQoKTsKKyAgICBjYWNoZWRJbWFnZS0+
YWRkQ2xpZW50KCZkdW1teUNhY2hlZEltYWdlQ2xpZW50KCkpOwogICAgIGNhY2hlZEltYWdlLT5z
ZXREZWNvZGVkU2l6ZShiaXRtYXBJbWFnZS0+ZGVjb2RlZFNpemUoKSk7CiAjaWYgRU5BQkxFKENB
Q0hFX1BBUlRJVElPTklORykKICAgICBjYWNoZWRJbWFnZS0+cmVzb3VyY2VSZXF1ZXN0KCkuc2V0
Q2FjaGVQYXJ0aXRpb24oY2FjaGVQYXJ0aXRpb24pOwogI2VuZGlmCi0gICAgYWRkKGNhY2hlZElt
YWdlKTsKKyAgICBhZGQoY2FjaGVkSW1hZ2UucmVsZWFzZSgpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtMjU1LDcgKzI2MCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUltYWdlRnJv
bUNhY2hlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0CiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIEEgcmVzb3VyY2UgZXhpc3RzIGFuZCBpcyBub3QgYSBtYW51YWxs
eSBjYWNoZWQgaW1hZ2UsIHNvIGp1c3QgcmVtb3ZlIGl0LgotICAgIGlmICghcmVzb3VyY2UtPmlz
SW1hZ2UoKSB8fCAhdG9DYWNoZWRJbWFnZShyZXNvdXJjZSktPmlzTWFudWFsKCkpIHsKKyAgICBp
ZiAoIXJlc291cmNlLT5pc0ltYWdlKCkgfHwgIXRvQ2FjaGVkSW1hZ2UocmVzb3VyY2UpLT5pc01h
bnVhbGx5Q2FjaGVkKCkpIHsKICAgICAgICAgZXZpY3QocmVzb3VyY2UpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjY1LDcgKzI3MCw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZUlt
YWdlRnJvbUNhY2hlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNhY2hlUGFydGl0CiAg
ICAgLy8gZGVhZCByZXNvdXJjZXMgYXJlIHBydW5lZC4gVGhhdCBtaWdodCBiZSBpbW1lZGlhdGVs
eSBzaW5jZQogICAgIC8vIHJlbW92aW5nIHRoZSBsYXN0IGNsaWVudCB0cmlnZ2VycyBhIE1lbW9y
eUNhY2hlOjpwcnVuZSwgc28gdGhlCiAgICAgLy8gcmVzb3VyY2UgbWF5IGJlIGRlbGV0ZWQgYWZ0
ZXIgdGhpcyBjYWxsLgotICAgIHRvQ2FjaGVkSW1hZ2VNYW51YWwodG9DYWNoZWRJbWFnZShyZXNv
dXJjZSkpLT5yZW1vdmVGYWtlQ2xpZW50KCk7CisgICAgdG9DYWNoZWRJbWFnZShyZXNvdXJjZSkt
PnJlbW92ZUNsaWVudCgmZHVtbXlDYWNoZWRJbWFnZUNsaWVudCgpKTsKIH0KICNlbmRpZgogCg==
</data>
<flag name="review"
          id="246908"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>