<?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>107105</bug_id>
          
          <creation_ts>2013-01-17 01:25:31 -0800</creation_ts>
          <short_desc>Teach Functional.h about WeakPtr</short_desc>
          <delta_ts>2013-01-17 14:18:42 -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>New Bugs</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>106127</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>809176</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 01:25:31 -0800</bug_when>
    <thetext>Teach Functional.h about WeakPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809179</commentid>
    <comment_count>1</comment_count>
      <attachid>183144</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 01:28:24 -0800</bug_when>
    <thetext>Created attachment 183144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809180</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-17 01:28:42 -0800</bug_when>
    <thetext>Anders will want to see this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809182</commentid>
    <comment_count>3</comment_count>
      <attachid>183144</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-17 01:31:14 -0800</bug_when>
    <thetext>Comment on attachment 183144
Patch

This seems super-useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809393</commentid>
    <comment_count>4</comment_count>
      <attachid>183144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-01-17 09:29:48 -0800</bug_when>
    <thetext>Comment on attachment 183144
Patch

Anders, are you going to review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809433</commentid>
    <comment_count>5</comment_count>
      <attachid>183144</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-17 10:11:30 -0800</bug_when>
    <thetext>Comment on attachment 183144
Patch

Nice, I didn&apos;t even know we had a WeakPtr type. I&apos;d like to know about its semantics:

Is it thread-safe? If not, it seems like this is a bad idea since we&apos;re essentially passing objects between two threads here. If it is, then it seems like there needs to be an atomic operation to temporarily make the weak pointer strong so we&apos;re not trying to call it on one thread while it&apos;s being destroyed on another thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809440</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 10:22:46 -0800</bug_when>
    <thetext>&gt; Nice, I didn&apos;t even know we had a WeakPtr type.

I just added it a couple days ago:

http://trac.webkit.org/browser/trunk/Source/WTF/wtf/WeakPtr.h

&gt; I&apos;d like to know about its semantics:
&gt; 
&gt; Is it thread-safe? If not, it seems like this is a bad idea since we&apos;re essentially passing objects between two threads here. If it is, then it seems like there needs to be an atomic operation to temporarily make the weak pointer strong so we&apos;re not trying to call it on one thread while it&apos;s being destroyed on another thread.

There are two pieces to a WeakPtr: (1) the WeakPtr itself and (2) the underlying WeakReference.  The WeakReference is ThreadSafeRefCounted, which means you can hold a WeakPtr to an object on any thread.  However, access to the referenced object itself is not thread-safe because there is a race between the &quot;clear&quot; function, which zeros out the raw pointer to the object, and the &quot;get&quot; function, which retrieves the raw pointer.  That means, &quot;get&quot; and &quot;clear&quot; must always be called on the same thread.  WeakReference has ASSERTs to enforce this invariant.

From the point of view of Functional, that means that you can call &quot;bind&quot; on any thread (assuming you have a WeakPtr to the object), but you can only actually run the Function on the object&apos;s &quot;home&quot; thread (the thread on which the object will be destroyed---the same one whose identifier is stored in WeakReference::m_boundThread).  If you try to run the Function on the wrong thread, you&apos;ll hit an ASSERT in WeakPtr.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809733</commentid>
    <comment_count>7</comment_count>
      <attachid>183144</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-01-17 13:47:36 -0800</bug_when>
    <thetext>Comment on attachment 183144
Patch

Thanks, that makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809734</commentid>
    <comment_count>8</comment_count>
      <attachid>183144</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-17 13:48:46 -0800</bug_when>
    <thetext>Comment on attachment 183144
Patch

Thanks for the review.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809772</commentid>
    <comment_count>9</comment_count>
      <attachid>183144</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 14:18:38 -0800</bug_when>
    <thetext>Comment on attachment 183144
Patch

Clearing flags on attachment: 183144

Committed r140040: &lt;http://trac.webkit.org/changeset/140040&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>809773</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-17 14:18:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183144</attachid>
            <date>2013-01-17 01:28:24 -0800</date>
            <delta_ts>2013-01-17 14:18:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107105-20130117012525.patch</filename>
            <type>text/plain</type>
            <size>10042</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGVlY2EzOTg5ZDlmN2VlNGNmYTQ5MGI5
ZTQ2ZDBiOWEwODEzOGZhZjcuLjU0OGE0YmFkZDVlZWNkZDM0ZjhhN2NhODU2YmE2NzFiOTIyNTYw
OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTMtMDEtMTcgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBUZWFjaCBGdW5jdGlvbmFsLmggYWJvdXQgV2Vha1B0cgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MTA1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBjb21tb24g
cGF0dGVybiBpbiBjcm9zcy10aHJlYWQgY29tbXVuaWNhdGlvbiBpcyB0byBjYWxsIG1lbWJlcgor
ICAgICAgICBmdW5jdGlvbnMgb2YgYW4gb2JqZWN0IG9uIGEgcmVtb3RlIHRocmVhZC4gSWYgdGhl
IGNhbGxlcidzIHJlZmVyZW5jZSB0bworICAgICAgICB0aGUgb2JqZWN0IG9uIHRoZSByZW1vdGUg
dGhyZWFkIGlzIGEgV2Vha1B0ciwgdGhlIGNhbGxlciB1c3VhbGx5IHdhbnRzCisgICAgICAgIHRv
IHZhbGlkYXRlIHRoYXQgdGhlIG9iamVjdCBzdGlsbCBleGlzdHMgd2hlbiB0aGUgY2FsbCBhY3R1
YWxseSB0YWtlcworICAgICAgICBwbGFjZS4KKworICAgICAgICBJdCdzIHBvc3NpYmxlIHRvIGRv
IHRoaXMgbWFudWFsbHkgZm9yIGV2ZXJ5IGNyb3NzLXRocmVhZCBjYWxsLCBidXQgdGhhdAorICAg
ICAgICBpcyB0aXJlc29tZSBhbmQgZXJyb3IgcHJvbmUuIEluc3RlYWQsIHdlIGNhbiB0ZWFjaCBi
aW5kIHRvIHZhbGlkYXRlCisgICAgICAgIFdlYWtQdHIgYXJndW1lbnRzIHdoZW4gcGFzc2VkIGFz
IHRoZSAidGhpcyIgcGFyYW1ldGVyIHRvIGEgbWVtYmVyCisgICAgICAgIGZ1bmN0aW9uLgorCisg
ICAgICAgICogd3RmL0Z1bmN0aW9uYWwuaDoKKyAgICAgICAgKFdURjo6UGFyYW1TdG9yYWdlVHJh
aXRzOjp2YWxpZGF0ZSk6CisKIDIwMTMtMDEtMTYgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1p
bkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBHQ0MncyBpbXBsZW1lbnRhdGlvbiBvZiBhdG9t
aWNJbmNyZW1lbnQvRGVjcmVtZW50IG9uIE1hYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RnVuY3Rpb25hbC5oIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb25hbC5oCmluZGV4IDgyOGFjMmY5
MWYwZTdmMzIxMTlkYzEzNTFiNzMyNmY5YmM4NGI4OTIuLmM1YjcxMjRhMmMwYTE4ZDkwMzJmNjA5
NTIzNmRkNDVhYWZjNTdhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uYWwu
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbmFsLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBDT01QSUxFUl9TVVBQT1JUUyhCTE9DS1MpCiAjaW5j
bHVkZSA8QmxvY2suaD4KQEAgLTgyLDYgKzgzLDcgQEAgY2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIg
KCopKCk+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFIgUmVzdWx0VHlwZTsKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IGZhbHNlOworICAgIHN0YXRpYyBj
b25zdCBib29sIHNob3VsZFZhbGlkYXRlRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKIAogICAgIGV4
cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICgqZnVuY3Rpb24pKCkpCiAgICAgICAgIDogbV9mdW5j
dGlvbihmdW5jdGlvbikKQEAgLTEwMiw2ICsxMDQsNyBAQCBjbGFzcyBGdW5jdGlvbldyYXBwZXI8
UiAoKikoUDEpPiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBmYWxzZTsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBzaG91bGRWYWxpZGF0ZUZpcnN0UGFyYW1ldGVyID0gZmFsc2U7CiAKICAg
ICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoKmZ1bmN0aW9uKShQMSkpCiAgICAgICAgIDog
bV9mdW5jdGlvbihmdW5jdGlvbikKQEAgLTEyMiw2ICsxMjUsNyBAQCBjbGFzcyBGdW5jdGlvbldy
YXBwZXI8UiAoKikoUDEsIFAyKT4gewogcHVibGljOgogICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBl
OwogICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gZmFsc2U7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkVmFsaWRhdGVGaXJzdFBhcmFtZXRlciA9IGZh
bHNlOwogCiAgICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKCpmdW5jdGlvbikoUDEsIFAy
KSkKICAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQpAQCAtMTQyLDYgKzE0Niw3IEBAIGNs
YXNzIEZ1bmN0aW9uV3JhcHBlcjxSICgqKShQMSwgUDIsIFAzKT4gewogcHVibGljOgogICAgIHR5
cGVkZWYgUiBSZXN1bHRUeXBlOwogICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFJlZkZpcnN0
UGFyYW1ldGVyID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkVmFsaWRhdGVG
aXJzdFBhcmFtZXRlciA9IGZhbHNlOwogCiAgICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIg
KCpmdW5jdGlvbikoUDEsIFAyLCBQMykpCiAgICAgICAgIDogbV9mdW5jdGlvbihmdW5jdGlvbikK
QEAgLTE2Miw2ICsxNjcsNyBAQCBjbGFzcyBGdW5jdGlvbldyYXBwZXI8UiAoQzo6KikoKT4gewog
cHVibGljOgogICAgIHR5cGVkZWYgUiBSZXN1bHRUeXBlOwogICAgIHN0YXRpYyBjb25zdCBib29s
IHNob3VsZFJlZkZpcnN0UGFyYW1ldGVyID0gSGFzUmVmQW5kRGVyZWY8Qz46OnZhbHVlOworICAg
IHN0YXRpYyBjb25zdCBib29sIHNob3VsZFZhbGlkYXRlRmlyc3RQYXJhbWV0ZXIgPSB0cnVlOwog
CiAgICAgZXhwbGljaXQgRnVuY3Rpb25XcmFwcGVyKFIgKEM6OipmdW5jdGlvbikoKSkKICAgICAg
ICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQpAQCAtMTgyLDYgKzE4OCw3IEBAIGNsYXNzIEZ1bmN0
aW9uV3JhcHBlcjxSIChDOjoqKShQMSk+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFIgUmVzdWx0
VHlwZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IEhh
c1JlZkFuZERlcmVmPEM+Ojp2YWx1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRWYWxp
ZGF0ZUZpcnN0UGFyYW1ldGVyID0gdHJ1ZTsKIAogICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBl
cihSIChDOjoqZnVuY3Rpb24pKFAxKSkKICAgICAgICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQpA
QCAtMjAyLDYgKzIwOSw3IEBAIGNsYXNzIEZ1bmN0aW9uV3JhcHBlcjxSIChDOjoqKShQMSwgUDIp
PiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7CiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgc2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkVmFsaWRhdGVGaXJzdFBhcmFtZXRlciA9IHRy
dWU7CiAKICAgICBleHBsaWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwg
UDIpKQogICAgICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCkBAIC0yMjIsNiArMjMwLDcgQEAg
Y2xhc3MgRnVuY3Rpb25XcmFwcGVyPFIgKEM6OiopKFAxLCBQMiwgUDMpPiB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBSIFJlc3VsdFR5cGU7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVm
Rmlyc3RQYXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2hvdWxkVmFsaWRhdGVGaXJzdFBhcmFtZXRlciA9IHRydWU7CiAKICAgICBleHBs
aWNpdCBGdW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzKSkKICAgICAg
ICAgOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQpAQCAtMjQyLDYgKzI1MSw3IEBAIGNsYXNzIEZ1bmN0
aW9uV3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQNCk+IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIFIgUmVzdWx0VHlwZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBh
cmFtZXRlciA9IEhhc1JlZkFuZERlcmVmPEM+Ojp2YWx1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBzaG91bGRWYWxpZGF0ZUZpcnN0UGFyYW1ldGVyID0gdHJ1ZTsKIAogICAgIGV4cGxpY2l0IEZ1
bmN0aW9uV3JhcHBlcihSIChDOjoqZnVuY3Rpb24pKFAxLCBQMiwgUDMsIFA0KSkKICAgICAgICAg
OiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQpAQCAtMjYyLDYgKzI3Miw3IEBAIGNsYXNzIEZ1bmN0aW9u
V3JhcHBlcjxSIChDOjoqKShQMSwgUDIsIFAzLCBQNCwgUDUpPiB7CiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBSIFJlc3VsdFR5cGU7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2hvdWxkUmVmRmlyc3RQ
YXJhbWV0ZXIgPSBIYXNSZWZBbmREZXJlZjxDPjo6dmFsdWU7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2hvdWxkVmFsaWRhdGVGaXJzdFBhcmFtZXRlciA9IHRydWU7CiAKICAgICBleHBsaWNpdCBG
dW5jdGlvbldyYXBwZXIoUiAoQzo6KmZ1bmN0aW9uKShQMSwgUDIsIFAzLCBQNCwgUDUpKQogICAg
ICAgICA6IG1fZnVuY3Rpb24oZnVuY3Rpb24pCkBAIC0yODMsNiArMjk0LDcgQEAgY2xhc3MgRnVu
Y3Rpb25XcmFwcGVyPFIgKF4pKCk+IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFIgUmVzdWx0VHlw
ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBzaG91bGRSZWZGaXJzdFBhcmFtZXRlciA9IGZhbHNl
OworICAgIHN0YXRpYyBjb25zdCBib29sIHNob3VsZFZhbGlkYXRlRmlyc3RQYXJhbWV0ZXIgPSBm
YWxzZTsKIAogICAgIGV4cGxpY2l0IEZ1bmN0aW9uV3JhcHBlcihSICheYmxvY2spKCkpCiAgICAg
ICAgIDogbV9ibG9jayhCbG9ja19jb3B5KGJsb2NrKSkKQEAgLTMyMyw2ICszMzUsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyYW1TdG9yYWdlVHJhaXRzIHsKICAgICB0eXBlZGVm
IFQgU3RvcmFnZVR5cGU7CiAKICAgICBzdGF0aWMgU3RvcmFnZVR5cGUgd3JhcChjb25zdCBUJiB2
YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZShjb25zdCBT
dG9yYWdlVHlwZSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgY29uc3QgVCYgdW53cmFw
KGNvbnN0IFN0b3JhZ2VUeXBlJiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KIH07CiAKQEAgLTMz
MCw2ICszNDMsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyYW1TdG9yYWdlVHJh
aXRzPFBhc3NSZWZQdHI8VD4gPiB7CiAgICAgdHlwZWRlZiBSZWZQdHI8VD4gU3RvcmFnZVR5cGU7
CiAKICAgICBzdGF0aWMgU3RvcmFnZVR5cGUgd3JhcChQYXNzUmVmUHRyPFQ+IHZhbHVlKSB7IHJl
dHVybiB2YWx1ZTsgfQorICAgIHN0YXRpYyBib29sIHZhbGlkYXRlKGNvbnN0IFN0b3JhZ2VUeXBl
JikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBUKiB1bndyYXAoY29uc3QgU3RvcmFnZVR5
cGUmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5nZXQoKTsgfQogfTsKIApAQCAtMzM3LDYgKzM1MSwx
NSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgUGFyYW1TdG9yYWdlVHJhaXRzPFJlZlB0
cjxUPiA+IHsKICAgICB0eXBlZGVmIFJlZlB0cjxUPiBTdG9yYWdlVHlwZTsKIAogICAgIHN0YXRp
YyBTdG9yYWdlVHlwZSB3cmFwKFJlZlB0cjxUPiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUucmVsZWFz
ZSgpOyB9CisgICAgc3RhdGljIGJvb2wgdmFsaWRhdGUoY29uc3QgU3RvcmFnZVR5cGUmKSB7IHJl
dHVybiB0cnVlOyB9CisgICAgc3RhdGljIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgdmFs
dWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dHJ1Y3QgUGFyYW1TdG9yYWdlVHJhaXRzPFdlYWtQdHI8VD4gPiB7CisgICAgdHlwZWRlZiBXZWFr
UHRyPFQ+IFN0b3JhZ2VUeXBlOworCisgICAgc3RhdGljIFN0b3JhZ2VUeXBlIHdyYXAoV2Vha1B0
cjxUPiB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7IH0KKyAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZShj
b25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdldCgpOyB9CiAgICAgc3Rh
dGljIFQqIHVud3JhcChjb25zdCBTdG9yYWdlVHlwZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmdl
dCgpOyB9CiB9OwogCkBAIC0zNDcsNiArMzcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Ry
dWN0IFBhcmFtU3RvcmFnZVRyYWl0czxSZXRhaW5QdHI8VD4gPiB7CiAgICAgdHlwZWRlZiBSZXRh
aW5QdHI8VD4gU3RvcmFnZVR5cGU7CiAKICAgICBzdGF0aWMgU3RvcmFnZVR5cGUgd3JhcChjb25z
dCBSZXRhaW5QdHI8VD4mIHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQorICAgIHN0YXRpYyBib29s
IHZhbGlkYXRlKGNvbnN0IFN0b3JhZ2VUeXBlJikgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRp
YyB0eXBlbmFtZSBSZXRhaW5QdHI8VD46OlB0clR5cGUgdW53cmFwKGNvbnN0IFN0b3JhZ2VUeXBl
JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUuZ2V0KCk7IH0KIH07CiAKQEAgLTM3NSw3ICszOTksNyBA
QCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgUiBvcGVyYXRvcigpKCkKKyAg
ICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlwZSBvcGVyYXRvcigp
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2Z1bmN0aW9uV3JhcHBlcigpOwogICAgIH0KQEAg
LTM4Niw3ICs0MTAsNiBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXIsIHR5cGVuYW1lIFIsIHR5cGVuYW1lIFAxPgogY2xhc3MgQm91bmRGdW5jdGlvbkltcGw8
RnVuY3Rpb25XcmFwcGVyLCBSIChQMSk+IDogcHVibGljIEZ1bmN0aW9uSW1wbDx0eXBlbmFtZSBG
dW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgKCk+IHsKLQogcHVibGljOgogICAgIEJvdW5kRnVu
Y3Rpb25JbXBsKEZ1bmN0aW9uV3JhcHBlciBmdW5jdGlvbldyYXBwZXIsIGNvbnN0IFAxJiBwMSkK
ICAgICAgICAgOiBtX2Z1bmN0aW9uV3JhcHBlcihmdW5jdGlvbldyYXBwZXIpCkBAIC00MDAsOCAr
NDIzLDEwIEBAIHB1YmxpYzoKICAgICAgICAgUmVmQW5kRGVyZWY8UDEsIEZ1bmN0aW9uV3JhcHBl
cjo6c2hvdWxkUmVmRmlyc3RQYXJhbWV0ZXI+OjpkZXJlZihtX3AxKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIFIgb3BlcmF0b3IoKSgpCisgICAgdmlydHVhbCB0eXBlbmFtZSBGdW5jdGlvbldyYXBw
ZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCiAgICAgeworICAgICAgICBpZiAoRnVuY3Rpb25X
cmFwcGVyOjpzaG91bGRWYWxpZGF0ZUZpcnN0UGFyYW1ldGVyICYmICFQYXJhbVN0b3JhZ2VUcmFp
dHM8UDE+Ojp2YWxpZGF0ZShtX3AxKSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBGdW5j
dGlvbldyYXBwZXI6OlJlc3VsdFR5cGUoKTsKICAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25XcmFw
cGVyKFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OnVud3JhcChtX3AxKSk7CiAgICAgfQogCkBAIC00
MjgsNiArNDUzLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB0eXBlbmFtZSBGdW5jdGlvbldy
YXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCiAgICAgeworICAgICAgICBpZiAoRnVuY3Rp
b25XcmFwcGVyOjpzaG91bGRWYWxpZGF0ZUZpcnN0UGFyYW1ldGVyICYmICFQYXJhbVN0b3JhZ2VU
cmFpdHM8UDE+Ojp2YWxpZGF0ZShtX3AxKSkKKyAgICAgICAgICAgIHJldHVybiB0eXBlbmFtZSBG
dW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUoKTsKICAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb25X
cmFwcGVyKFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OnVud3JhcChtX3AxKSwgUGFyYW1TdG9yYWdl
VHJhaXRzPFAyPjo6dW53cmFwKG1fcDIpKTsKICAgICB9CiAKQEAgLTQ1Niw2ICs0ODMsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6UmVzdWx0VHlw
ZSBvcGVyYXRvcigpKCkKICAgICB7CisgICAgICAgIGlmIChGdW5jdGlvbldyYXBwZXI6OnNob3Vs
ZFZhbGlkYXRlRmlyc3RQYXJhbWV0ZXIgJiYgIVBhcmFtU3RvcmFnZVRyYWl0czxQMT46OnZhbGlk
YXRlKG1fcDEpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6
UmVzdWx0VHlwZSgpOwogICAgICAgICByZXR1cm4gbV9mdW5jdGlvbldyYXBwZXIoUGFyYW1TdG9y
YWdlVHJhaXRzPFAxPjo6dW53cmFwKG1fcDEpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDI+Ojp1bndy
YXAobV9wMiksIFBhcmFtU3RvcmFnZVRyYWl0czxQMz46OnVud3JhcChtX3AzKSk7CiAgICAgfQog
CkBAIC00ODYsNiArNTE1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB0eXBlbmFtZSBGdW5j
dGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCiAgICAgeworICAgICAgICBpZiAo
RnVuY3Rpb25XcmFwcGVyOjpzaG91bGRWYWxpZGF0ZUZpcnN0UGFyYW1ldGVyICYmICFQYXJhbVN0
b3JhZ2VUcmFpdHM8UDE+Ojp2YWxpZGF0ZShtX3AxKSkKKyAgICAgICAgICAgIHJldHVybiB0eXBl
bmFtZSBGdW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUoKTsKICAgICAgICAgcmV0dXJuIG1fZnVu
Y3Rpb25XcmFwcGVyKFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OnVud3JhcChtX3AxKSwgUGFyYW1T
dG9yYWdlVHJhaXRzPFAyPjo6dW53cmFwKG1fcDIpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+Ojp1
bndyYXAobV9wMyksIFBhcmFtU3RvcmFnZVRyYWl0czxQND46OnVud3JhcChtX3A0KSk7CiAgICAg
fQogCkBAIC01MTgsNiArNTQ5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB0eXBlbmFtZSBG
dW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUgb3BlcmF0b3IoKSgpCiAgICAgeworICAgICAgICBp
ZiAoRnVuY3Rpb25XcmFwcGVyOjpzaG91bGRWYWxpZGF0ZUZpcnN0UGFyYW1ldGVyICYmICFQYXJh
bVN0b3JhZ2VUcmFpdHM8UDE+Ojp2YWxpZGF0ZShtX3AxKSkKKyAgICAgICAgICAgIHJldHVybiB0
eXBlbmFtZSBGdW5jdGlvbldyYXBwZXI6OlJlc3VsdFR5cGUoKTsKICAgICAgICAgcmV0dXJuIG1f
ZnVuY3Rpb25XcmFwcGVyKFBhcmFtU3RvcmFnZVRyYWl0czxQMT46OnVud3JhcChtX3AxKSwgUGFy
YW1TdG9yYWdlVHJhaXRzPFAyPjo6dW53cmFwKG1fcDIpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8UDM+
Ojp1bndyYXAobV9wMyksIFBhcmFtU3RvcmFnZVRyYWl0czxQND46OnVud3JhcChtX3A0KSwgUGFy
YW1TdG9yYWdlVHJhaXRzPFA1Pjo6dW53cmFwKG1fcDUpKTsKICAgICB9CiAKQEAgLTU1Miw2ICs1
ODUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHR5cGVuYW1lIEZ1bmN0aW9uV3JhcHBlcjo6
UmVzdWx0VHlwZSBvcGVyYXRvcigpKCkKICAgICB7CisgICAgICAgIGlmIChGdW5jdGlvbldyYXBw
ZXI6OnNob3VsZFZhbGlkYXRlRmlyc3RQYXJhbWV0ZXIgJiYgIVBhcmFtU3RvcmFnZVRyYWl0czxQ
MT46OnZhbGlkYXRlKG1fcDEpKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIEZ1bmN0aW9u
V3JhcHBlcjo6UmVzdWx0VHlwZSgpOwogICAgICAgICByZXR1cm4gbV9mdW5jdGlvbldyYXBwZXIo
UGFyYW1TdG9yYWdlVHJhaXRzPFAxPjo6dW53cmFwKG1fcDEpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8
UDI+Ojp1bndyYXAobV9wMiksIFBhcmFtU3RvcmFnZVRyYWl0czxQMz46OnVud3JhcChtX3AzKSwg
UGFyYW1TdG9yYWdlVHJhaXRzPFA0Pjo6dW53cmFwKG1fcDQpLCBQYXJhbVN0b3JhZ2VUcmFpdHM8
UDU+Ojp1bndyYXAobV9wNSksIFBhcmFtU3RvcmFnZVRyYWl0czxQNj46OnVud3JhcChtX3A2KSk7
CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>