<?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>70833</bug_id>
          
          <creation_ts>2011-10-25 11:53:24 -0700</creation_ts>
          <short_desc>SerializedScriptValue: lazy initialization of static nullValue not threadsafe</short_desc>
          <delta_ts>2012-05-16 18:35:32 -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>WebCore Misc.</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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>antonm</cc>
    
    <cc>dgrogan</cc>
    
    <cc>hans</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>vitalyr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>490195</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-10-25 11:53:24 -0700</bug_when>
    <thetext>For the origin of the change:
https://bugs.webkit.org/show_bug.cgi?id=41372#c18

For concerns with the implementation, noted while creating a similar method:
https://bugs.webkit.org/show_bug.cgi?id=60197#c13

Short version - this pattern does not look threadsafe:

Source/WebCore/binding/v8/SerializedScriptValue.cpp(1932):
&gt; SerializedScriptValue* SerializedScriptValue::nullValue()
&gt; {
&gt;     DEFINE_STATIC_LOCAL(RefPtr&lt;SerializedScriptValue&gt;, nullValue, (0));
&gt;     if (!nullValue) {
&gt; 	Writer writer;
&gt;         writer.writeNull();
&gt; 	String wireData = StringImpl::adopt(writer.data());
&gt; 	nullValue = adoptRef(new SerializedScriptValue(wireData));
&gt;     }
&gt;     return nullValue.get();
&gt; }

If this will be called from multiple threads, caching should move to the callers. If it will not be called from multiple threads there should be an assertion. Since SSV is used from Workers, the former is more likely to be true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490285</commentid>
    <comment_count>1</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-10-25 13:14:48 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; For the origin of the change:
&gt; https://bugs.webkit.org/show_bug.cgi?id=41372#c18
&gt; 
&gt; For concerns with the implementation, noted while creating a similar method:
&gt; https://bugs.webkit.org/show_bug.cgi?id=60197#c13
&gt; 
&gt; Short version - this pattern does not look threadsafe:
&gt; 
&gt; Source/WebCore/binding/v8/SerializedScriptValue.cpp(1932):
&gt; &gt; SerializedScriptValue* SerializedScriptValue::nullValue()
&gt; &gt; {
&gt; &gt;     DEFINE_STATIC_LOCAL(RefPtr&lt;SerializedScriptValue&gt;, nullValue, (0));
&gt; &gt;     if (!nullValue) {
&gt; &gt; 	Writer writer;
&gt; &gt;         writer.writeNull();
&gt; &gt; 	String wireData = StringImpl::adopt(writer.data());
&gt; &gt; 	nullValue = adoptRef(new SerializedScriptValue(wireData));
&gt; &gt;     }
&gt; &gt;     return nullValue.get();
&gt; &gt; }
&gt; 
&gt; If this will be called from multiple threads, caching should move to the callers. If it will not be called from multiple threads there should be an assertion. Since SSV is used from Workers, the former is more likely to be true.

But I don&apos;t think this method is used from Workers (At least not by postMessage -- I have no idea about idb).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490396</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-10-25 15:01:57 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; 
&gt; But I don&apos;t think this method is used from Workers (At least not by postMessage -- I have no idea about idb).

SerializedScriptValue::nullValue() is used by IDB and Worker support for IDB is being added by dgrogan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>490879</commentid>
    <comment_count>3</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2011-10-26 08:50:39 -0700</bug_when>
    <thetext>Guys, I believe Vitaly is an initial implementer and he can provide a lot of details.

I do agree that caching looks somewhat fishy.  I&apos;d rather drop it for now and reintroduce in thread safe manner later if need be.

Vitaly, any thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616808</commentid>
    <comment_count>4</comment_count>
      <attachid>140363</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-04 16:43:05 -0700</bug_when>
    <thetext>Created attachment 140363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616809</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-04 16:45:29 -0700</bug_when>
    <thetext>IndexedDB is only using this method from one thread at the moment (even with workers), but that may change soon.

ojan@ - any idea who would be good to review the dom/Document change in this, and/or evaluate the need for caching in call sites?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616815</commentid>
    <comment_count>6</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-05-04 16:56:07 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; ojan@ - any idea who would be good to review the dom/Document change in this, and/or evaluate the need for caching in call sites?

Best is to look at the blame for the code in question and add whoever modified/reviewed the most recent changes. At first glance, this change looks fine, but the nullValue thing needs explanation from someone who knows why the code was written that way to begin with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626053</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-05-16 17:25:22 -0700</bug_when>
    <thetext>I followed up with Vitaly - he doesn&apos;t recall any performance reason for the caching.

It looks like the source of the non-threadsafe change is:

http://trac.webkit.org/changeset/77558/trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp

The old code initialized the value inside the DEFINE_STATIC_LOCAL() macro. The new code wanted do more than a single call, so initialized the static to null then used an (unsafe) if (!nullValue) { ... } block to do the initialization.

An alternative to my patch would be to introduce a createNull() method that is non-threadsafe and call it from DEFINE_STATIC_LOCAL(). However, caching could just as easily move to the callers.

haraken@ - could you review the change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626064</commentid>
    <comment_count>8</comment_count>
      <attachid>140363</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-05-16 17:33:45 -0700</bug_when>
    <thetext>Comment on attachment 140363
Patch

Let me r+ it based on the following observations:

1. &quot;I followed up with Vitaly - he doesn&apos;t recall any performance reason for the caching.&quot;
2. booleanValue() and numberValue() are not caching the values.

If there were any performance concern, it would be best to cache the value in V8BindingsPerIsolateData (You can access V8BindingsPerIsolateData just by isolate-&gt;GetData()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626118</commentid>
    <comment_count>9</comment_count>
      <attachid>140363</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 18:35:26 -0700</bug_when>
    <thetext>Comment on attachment 140363
Patch

Clearing flags on attachment: 140363

Committed r117377: &lt;http://trac.webkit.org/changeset/117377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>626119</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-16 18:35:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140363</attachid>
            <date>2012-05-04 16:43:05 -0700</date>
            <delta_ts>2012-05-16 18:35:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70833-20120504164304.patch</filename>
            <type>text/plain</type>
            <size>6582</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzdmNjc1YzljZmJjMzgx
ZDY1MzA3Y2QwMzcwNzEyZmQyMjViODRlZS4uZTgxMThmZDAxN2U4NTIyZTY2ZDY3OWU3ODU3NmVi
ZTE4MTZmZjg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTA0ICBKb3No
dWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOiBsYXp5IGluaXRpYWxpemF0aW9uIG9mIHN0YXRpYyBudWxsVmFsdWUgbm90IHRocmVh
ZHNhZmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcw
ODMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVt
b3ZlIHVuc2FmZSBsYXp5IGluaXRpYWxpemF0aW9uIG9mIHN0YXRpYyB8bnVsbHwgU1NWLiBOb25l
IG9mIHRoZSBjYWxsZXJzCisgICAgICAgIGFwcGVhcmVkIHRvIGJlIGluIHBlcmZvcm1hbmNlLWNy
aXRpY2FsIGFyZWFzIC0gbW9zdCB3ZXJlIHByZXBhcmluZyBhbiBldmVudCB0bworICAgICAgICBi
ZSBkaXNwYXRjaGVkIHRvIHNjcmlwdCAtIHNvIG5vIHBlci1jYWxsLXNpdGUgY2FjaGluZyB3YXMg
YWRkZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0gbm8gZnVuY3Rpb25hbCBjaGFuZ2VzLgor
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDogTWludCBh
IG5ldyBvbmUgZWFjaCB0aW1lLgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpudWxsVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oOiBSZXR1cm4gdmlhIFBhc3NSZWZQdHIuCisgICAgICAgICogYmluZGluZ3MvdjgvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcDogTWludCBhIG5ldyBvbmUgZWFjaCB0aW1lLgorICAgICAg
ICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oOiBSZXR1cm4gdmlhIFBhc3NSZWZQ
dHIuCisgICAgICAgIChTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3RhdGVQb3BwZWQpOiBDaGFu
Z2UgdG8gUGFzc1JlZlB0ciB0byBtYWludGFpbiByZWZjb3VudC4KKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKERvY3VtZW50KToKKwogMjAxMi0wNS0wNCAgT2phbiBWYWZhaSAg
PG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBmaWxlIHRoYXQgd2FzIGRlbGV0
ZWQgaW4gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE2MDg1Ly4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDdjNzE2YzBiYTFlMmY5MWJmNTA2MTJlODM5ZGU0ZWJlZjNmNDQyNDYuLjk3MGM4NTA1ZjQ2
NTMwZWI1MjQ5OTQzYzZmZjE4NWYyOWNiNGY4NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMTg1OSwxMCArMTg1
OSw5IEBAIEpTVmFsdWVSZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0Nv
bnRleHRSZWYgZGVzdGluYXRpb25Db250ZXh0LCBKCiAgICAgcmV0dXJuIGRlc2VyaWFsaXplKGRl
c3RpbmF0aW9uQ29udGV4dCwgZXhjZXB0aW9uLCAwKTsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZh
bHVlKiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpCitQYXNzUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIGVt
cHR5VmFsdWUsIChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpKSk7Ci0gICAgcmV0dXJu
IGVtcHR5VmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3Jl
YXRlKCk7CiB9CiAKIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OnVuZGVmaW5lZFZhbHVlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKaW5kZXggMWEyZGUwMDY4NDJkOTAzYmQ5
Yzc5YzQ1NjFhM2YyNDNiYzAzZDJiNC4uOTliYTFjMTk2ZGJiMzU1ZjA3MjgwNjczNTU4MGI2NTM2
NDlhNWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKCk7Ci0gICAgc3Rh
dGljIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogbnVsbFZhbHVlKCk7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBudWxsVmFsdWUoKTsKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHVuZGVmaW5lZFZhbHVlKCk7CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBib29sZWFuVmFsdWUoYm9vbCB2
YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDEwMjNhYmQxODg5MjczNmFjMTEyMDU4MTBlMWFiNmExMmFh
ODBhZTIuLmUyYzFmN2NkMzU1Njc1OGMxNmQxNzU3MmM2MGY5YmVkNmIwMzQ0MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNw
cApAQCAtMjA5OCwxOCArMjA5OCwxMiBAQCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKCkpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWUq
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlKQor
UGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
bnVsbFZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlz
IG5vdCB0aHJlYWQtc2FmZS4gTW92ZSBjYWNoaW5nIHRvIGNhbGxlcnMuCi0gICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwODMzCi0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgbnVsbFZhbHVlLCAoMCkpOwot
ICAgIGlmICghbnVsbFZhbHVlKSB7Ci0gICAgICAgIFdyaXRlciB3cml0ZXIoaXNvbGF0ZSk7Ci0g
ICAgICAgIHdyaXRlci53cml0ZU51bGwoKTsKLSAgICAgICAgU3RyaW5nIHdpcmVEYXRhID0gU3Ry
aW5nSW1wbDo6YWRvcHQod3JpdGVyLmRhdGEoKSk7Ci0gICAgICAgIG51bGxWYWx1ZSA9IGFkb3B0
UmVmKG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUod2lyZURhdGEpKTsKLSAgICB9Ci0gICAgcmV0
dXJuIG51bGxWYWx1ZS5nZXQoKTsKKyAgICBXcml0ZXIgd3JpdGVyKGlzb2xhdGUpOworICAgIHdy
aXRlci53cml0ZU51bGwoKTsKKyAgICBTdHJpbmcgd2lyZURhdGEgPSBTdHJpbmdJbXBsOjphZG9w
dCh3cml0ZXIuZGF0YSgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSh3aXJlRGF0YSkpOwogfQogCiBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp1bmRlZmluZWRWYWx1ZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKaW5kZXggMWZhOTllOGE0ZDc2NDA2YTIyZDUzNmI3N2RkYTRmY2NjZDA2ZTRjYy4u
MTVlZjJjMjNlZjU3NmUwZmJhMTdkNjBlMzk1ZTcwYWYzM2RjNjVhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZGF0YSwgdjg6Oklzb2xhdGUqID0gMCk7CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoKTsKIAotICAg
IHN0YXRpYyBTZXJpYWxpemVkU2NyaXB0VmFsdWUqIG51bGxWYWx1ZSh2ODo6SXNvbGF0ZSogPSAw
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG51bGxWYWx1
ZSh2ODo6SXNvbGF0ZSogPSAwKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHVuZGVmaW5lZFZhbHVlKHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYm9vbGVhblZhbHVlKGJvb2wgdmFsdWUs
IHY4OjpJc29sYXRlKiA9IDApOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbnVtYmVyVmFsdWUoZG91YmxlIHZhbHVlLCB2ODo6SXNvbGF0ZSogPSAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDI3YzRiMTY1Y2RlMWVmYzVlYjc5YmIzZmVhODdiN2M0
NTZmZmE4YWYuLjJiNGI4MGQzOGNmZGVlMjY0YzQxNTUyOGVlZDY5ZWIxNzcyNDU4YjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTAwOCw3ICs1MDA4LDcgQEAgdm9pZCBEb2N1bWVudDo6
dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGNvbnN0IEtVUkwmIHVybCkKICAgICAgICAg
ZG9jdW1lbnRMb2FkZXItPnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlv
bih1cmwpOwogfQogCi12b2lkIERvY3VtZW50OjpzdGF0ZVBvcHBlZChTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHN0YXRlT2JqZWN0KQordm9pZCBEb2N1bWVudDo6c3RhdGVQb3BwZWQoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0KQogewogICAgIGlmICghZnJhbWUo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAyY2ZmMDBkMmRlYWYx
YzdhOGMxNjNlN2VlNjc0YmM0NzFlOTlhZDgzLi5lNjAzZmI1NzdiYjEwYzcxZGM5MWY1Y2NhNzQ3
N2U0NzdkYzkzODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4pOwogCiAgICAgdm9pZCB1cGRhdGVVUkxGb3JQdXNoT3JSZXBsYWNlU3RhdGUoY29uc3Qg
S1VSTCYpOwotICAgIHZvaWQgc3RhdGVQb3BwZWQoU2VyaWFsaXplZFNjcmlwdFZhbHVlKik7Cisg
ICAgdm9pZCBzdGF0ZVBvcHBlZChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4pOwog
CiAgICAgYm9vbCBwcm9jZXNzaW5nTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNz
aW5nTG9hZEV2ZW50OyB9CiAgICAgYm9vbCBsb2FkRXZlbnRGaW5pc2hlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9hZEV2ZW50RmluaXNoZWQ7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>