<?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>199831</bug_id>
          
          <creation_ts>2019-07-16 09:27:32 -0700</creation_ts>
          <short_desc>Add DataMutex and MainThreadData wrappers</short_desc>
          <delta_ts>2019-07-23 07:52:17 -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>Web Template Framework</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alicia Boya García">aboya</reporter>
          <assigned_to name="Alicia Boya García">aboya</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1553200</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2019-07-16 09:27:32 -0700</bug_when>
    <thetext>DataMutex&lt;T&gt; stores an instance of T in a private member along with a
mutex. In order to use its fields, users need to instantiate a
DataMutex&lt;T&gt;::LockedWrapper instance in the stack. This class uses
RAII to lock and unlock the mutex in construction and destruction
respectively, and by using the arrow operator lets the user access T&apos;s
members.

This way, DataMutex&lt;T&gt; prevents most instances of accidental access to
data fields that should only be read and modified in an atomic matter.

Still, both the Lock and the LockHolder are exposed once the user has
taken the lock so that special cases such as waiting for a condition
variable or performing an early unlock are doable.

MainThreadData&lt;T&gt; is another wrapper class, in this case for data
fields that should only be accessed from the main thread. In this
case, it works similar to a smart pointer, except that (1) there is no
actual memory indirection, T is stored directly inside
MainThreadData&lt;T&gt; and (2) attempts to use the -&gt; or * operator have an
isMainThread() assertion.

Together, these two wrapper classes make it easier to write
multi-threaded code in a safer, more self-documented way by letting
the author group data into structures that have certain access safety
requirements.

These structures were originally part of the new GStreamer
WebKitMediaSrc rework patch: https://bugs.webkit.org/show_bug.cgi?id=199719</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553212</commentid>
    <comment_count>1</comment_count>
      <attachid>374214</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2019-07-16 10:08:02 -0700</bug_when>
    <thetext>Created attachment 374214
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553568</commentid>
    <comment_count>2</comment_count>
      <attachid>374214</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-17 10:46:04 -0700</bug_when>
    <thetext>Comment on attachment 374214
Patch

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

&gt; Source/WTF/wtf/MainThreadData.h:29
&gt; +class MainThreadData {

This feels like it will want an operator T&amp;()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553595</commentid>
    <comment_count>3</comment_count>
      <attachid>374214</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2019-07-17 11:22:39 -0700</bug_when>
    <thetext>Comment on attachment 374214
Patch

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

&gt;&gt; Source/WTF/wtf/MainThreadData.h:29
&gt;&gt; +class MainThreadData {
&gt; 
&gt; This feels like it will want an operator T&amp;()

What would it do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553618</commentid>
    <comment_count>4</comment_count>
      <attachid>374214</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-17 12:24:21 -0700</bug_when>
    <thetext>Comment on attachment 374214
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/MainThreadData.h:29
&gt;&gt;&gt; +class MainThreadData {
&gt;&gt; 
&gt;&gt; This feels like it will want an operator T&amp;()
&gt; 
&gt; What would it do?

return a reference to m_data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1553638</commentid>
    <comment_count>5</comment_count>
      <attachid>374214</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2019-07-17 13:02:00 -0700</bug_when>
    <thetext>Comment on attachment 374214
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/MainThreadData.h:29
&gt;&gt;&gt;&gt; +class MainThreadData {
&gt;&gt;&gt; 
&gt;&gt;&gt; This feels like it will want an operator T&amp;()
&gt;&gt; 
&gt;&gt; What would it do?
&gt; 
&gt; return a reference to m_data

That would make it easier to store it and pass it away, allowing for unprotected access. I want to make that uncomfortable on purpose :)

If someone really really wants, they can use &amp;*, in a similar way to how you can get an unprotected pointer from a shared_ptr&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1554738</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-07-22 11:14:51 -0700</bug_when>
    <thetext>ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555044</commentid>
    <comment_count>7</comment_count>
      <attachid>374214</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-23 07:51:35 -0700</bug_when>
    <thetext>Comment on attachment 374214
Patch

Clearing flags on attachment: 374214

Committed r247723: &lt;https://trac.webkit.org/changeset/247723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555045</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-23 07:51:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1555046</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-07-23 07:52:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/53446150&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>374214</attachid>
            <date>2019-07-16 10:08:02 -0700</date>
            <delta_ts>2019-07-23 07:51:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-199831-20190716190801.patch</filename>
            <type>text/plain</type>
            <size>10767</size>
            <attacher name="Alicia Boya García">aboya</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ3Mzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAxNTFiYTllODUwOTg4OGYxNTdlYjUx
ZTRmMGE4NTg2YTE3MTY5NzYuLmZhMzdjMzFhMzhjN2NjNmVhZmY3ZGI2NDJiODM3NDI4MDY1OWNk
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTktMDctMTYgIEFsaWNpYSBCb3lhIEdhcmPDrWEg
IDxhYm95YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBEYXRhTXV0ZXggYW5kIE1h
aW5UaHJlYWREYXRhIHdyYXBwZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTk4MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdHdvIG5ldyB3cmFwcGVyIGNsYXNzZXM6CisK
KyAgICAgICAgRGF0YU11dGV4PFQ+IHN0b3JlcyBhbiBpbnN0YW5jZSBvZiBUIGluIGEgcHJpdmF0
ZSBtZW1iZXIgYWxvbmcgd2l0aCBhCisgICAgICAgIG11dGV4LiBJbiBvcmRlciB0byB1c2UgaXRz
IGZpZWxkcywgdXNlcnMgbmVlZCB0byBpbnN0YW50aWF0ZSBhCisgICAgICAgIERhdGFNdXRleDxU
Pjo6TG9ja2VkV3JhcHBlciBpbnN0YW5jZSBpbiB0aGUgc3RhY2suIFRoaXMgY2xhc3MgdXNlcwor
ICAgICAgICBSQUlJIHRvIGxvY2sgYW5kIHVubG9jayB0aGUgbXV0ZXggaW4gY29uc3RydWN0aW9u
IGFuZCBkZXN0cnVjdGlvbgorICAgICAgICByZXNwZWN0aXZlbHksIGFuZCBieSB1c2luZyB0aGUg
YXJyb3cgb3BlcmF0b3IgbGV0cyB0aGUgdXNlciBhY2Nlc3MgVCdzCisgICAgICAgIG1lbWJlcnMu
CisKKyAgICAgICAgVGhpcyB3YXksIERhdGFNdXRleDxUPiBwcmV2ZW50cyBtb3N0IGluc3RhbmNl
cyBvZiBhY2NpZGVudGFsIGFjY2VzcyB0bworICAgICAgICBkYXRhIGZpZWxkcyB0aGF0IHNob3Vs
ZCBvbmx5IGJlIHJlYWQgYW5kIG1vZGlmaWVkIGluIGFuIGF0b21pYyBtYXR0ZXIuCisKKyAgICAg
ICAgU3RpbGwsIGJvdGggdGhlIExvY2sgYW5kIHRoZSBMb2NrSG9sZGVyIGFyZSBleHBvc2VkIG9u
Y2UgdGhlIHVzZXIgaGFzCisgICAgICAgIHRha2VuIHRoZSBsb2NrIHNvIHRoYXQgc3BlY2lhbCBj
YXNlcyBzdWNoIGFzIHdhaXRpbmcgZm9yIGEgY29uZGl0aW9uCisgICAgICAgIHZhcmlhYmxlIG9y
IHBlcmZvcm1pbmcgYW4gZWFybHkgdW5sb2NrIGFyZSBkb2FibGUuCisKKyAgICAgICAgTWFpblRo
cmVhZERhdGE8VD4gaXMgYW5vdGhlciB3cmFwcGVyIGNsYXNzLCBpbiB0aGlzIGNhc2UgZm9yIGRh
dGEKKyAgICAgICAgZmllbGRzIHRoYXQgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuIEluIHRoaXMKKyAgICAgICAgY2FzZSwgaXQgd29ya3Mgc2ltaWxhciB0byBh
IHNtYXJ0IHBvaW50ZXIsIGV4Y2VwdCB0aGF0ICgxKSB0aGVyZSBpcyBubworICAgICAgICBhY3R1
YWwgbWVtb3J5IGluZGlyZWN0aW9uLCBUIGlzIHN0b3JlZCBkaXJlY3RseSBpbnNpZGUKKyAgICAg
ICAgTWFpblRocmVhZERhdGE8VD4gYW5kICgyKSBhdHRlbXB0cyB0byB1c2UgdGhlIC0+IG9yICog
b3BlcmF0b3IgaGF2ZSBhbgorICAgICAgICBpc01haW5UaHJlYWQoKSBhc3NlcnRpb24uCisKKyAg
ICAgICAgVG9nZXRoZXIsIHRoZXNlIHR3byB3cmFwcGVyIGNsYXNzZXMgbWFrZSBpdCBlYXNpZXIg
dG8gd3JpdGUKKyAgICAgICAgbXVsdGktdGhyZWFkZWQgY29kZSBpbiBhIHNhZmVyLCBtb3JlIHNl
bGYtZG9jdW1lbnRlZCB3YXkgYnkgbGV0dGluZworICAgICAgICB0aGUgYXV0aG9yIGdyb3VwIGRh
dGEgaW50byBzdHJ1Y3R1cmVzIHRoYXQgaGF2ZSBjZXJ0YWluIGFjY2VzcyBzYWZldHkKKyAgICAg
ICAgcmVxdWlyZW1lbnRzLgorCisgICAgICAgIFRoZXNlIHN0cnVjdHVyZXMgd2VyZSBvcmlnaW5h
bGx5IHBhcnQgb2YgdGhlIG5ldyBHU3RyZWFtZXIKKyAgICAgICAgV2ViS2l0TWVkaWFTcmMgcmV3
b3JrIHBhdGNoOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk5NzE5
CisKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL0RhdGFNdXRl
eC5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6RGF0YU11dGV4OjpEYXRhTXV0ZXgpOgorICAgICAg
ICAoV1RGOjpEYXRhTXV0ZXg6OkxvY2tlZFdyYXBwZXI6OkxvY2tlZFdyYXBwZXIpOgorICAgICAg
ICAoV1RGOjpEYXRhTXV0ZXg6OkxvY2tlZFdyYXBwZXI6Om9wZXJhdG9yLT4pOgorICAgICAgICAo
V1RGOjpEYXRhTXV0ZXg6OkxvY2tlZFdyYXBwZXI6Om9wZXJhdG9yKik6CisgICAgICAgIChXVEY6
OkRhdGFNdXRleDo6TG9ja2VkV3JhcHBlcjo6bXV0ZXgpOgorICAgICAgICAoV1RGOjpEYXRhTXV0
ZXg6OkxvY2tlZFdyYXBwZXI6OmxvY2tIb2xkZXIpOgorICAgICAgICAqIHd0Zi9NYWluVGhyZWFk
RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6TWFpblRocmVhZERhdGE6Ok1haW5UaHJlYWRE
YXRhKToKKyAgICAgICAgKFdURjo6TWFpblRocmVhZERhdGE6Om9wZXJhdG9yLT4pOgorICAgICAg
ICAoV1RGOjpNYWluVGhyZWFkRGF0YTo6b3BlcmF0b3IqKToKKwogMjAxOS0wNy0xMSAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIE5ldyBZb3JrIGZv
bnQgZXJyb25lb3VzbHkgZ2V0cyBzeW50aGV0aWMgYm9sZApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRl
eCBmZTQwZmUwYjM3YjcyZDhkYmU4MDIxZmM4Y2QxNjllMDFhMmI0NjNkLi5iN2ZlNzE0ZjRlN2Rm
MWVhMjBhNjA2NGZjZDg0Yjg2NzE3Y2I0YTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtNDQs
NiArNDQsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgQ3J5cHRvZ3JhcGhpY1V0aWxp
dGllcy5oCiAgICAgQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaAogICAgIERhdGFMb2cu
aAorICAgIERhdGFNdXRleC5oCiAgICAgRGF0ZU1hdGguaAogICAgIERlYnVnVXRpbGl0aWVzLmgK
ICAgICBEZWZlcnJhYmxlUmVmQ291bnRlZC5oCkBAIC0xMjIsNiArMTIzLDcgQEAgc2V0KFdURl9Q
VUJMSUNfSEVBREVSUwogICAgIE1ENS5oCiAgICAgTWFjaFNlbmRSaWdodC5oCiAgICAgTWFpblRo
cmVhZC5oCisgICAgTWFpblRocmVhZERhdGEuaAogICAgIE1hbGxvY1B0ci5oCiAgICAgTWFya2Fi
bGUuaAogICAgIE1hdGhFeHRyYXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRGF0YU11
dGV4LmggYi9Tb3VyY2UvV1RGL3d0Zi9EYXRhTXV0ZXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMmNmNGJhNzdh
YzRkNGY0ZjNjMzVmNmYwMmIyYWUyNmJmNWQxNTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dURi93dGYvRGF0YU11dGV4LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOSBJZ2FsaWEsIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBNZXRyb2xvZ2ljYWwg
R3JvdXAgQi5WLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0xvY2suaD4KKworbmFtZXNw
YWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBEYXRhTXV0ZXggeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKERhdGFNdXRleCk7CitwdWJsaWM6CisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgLi4uQXJncz4KKyAgICBleHBsaWNpdCBEYXRhTXV0ZXgoQXJncyYmLi4uIGFyZ3Mp
CisgICAgICAgIDogbV9kYXRhKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikKKyAgICB7IH0K
KworICAgIGNsYXNzIExvY2tlZFdyYXBwZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGlj
aXQgTG9ja2VkV3JhcHBlcihEYXRhTXV0ZXgmIGRhdGFNdXRleCkKKyAgICAgICAgICAgIDogbV9t
dXRleChkYXRhTXV0ZXgubV9tdXRleCkKKyAgICAgICAgICAgICwgbV9sb2NrSG9sZGVyKGRhdGFN
dXRleC5tX211dGV4KQorICAgICAgICAgICAgLCBtX2RhdGEoZGF0YU11dGV4Lm1fZGF0YSkKKyAg
ICAgICAgeyB9CisKKyAgICAgICAgVCogb3BlcmF0b3ItPigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiAmbV9kYXRhOworICAgICAgICB9CisKKyAgICAgICAgVCYgb3BlcmF0b3IqKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZGF0YTsKKyAgICAgICAgfQorCisgICAg
ICAgIExvY2smIG11dGV4KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbXV0ZXg7
CisgICAgICAgIH0KKworICAgICAgICBMb2NrSG9sZGVyJiBsb2NrSG9sZGVyKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIG1fbG9ja0hvbGRlcjsKKyAgICAgICAgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgTG9jayYgbV9tdXRleDsKKyAgICAgICAgTG9ja0hvbGRlciBtX2xvY2tI
b2xkZXI7CisgICAgICAgIFQmIG1fZGF0YTsKKyAgICB9OworCitwcml2YXRlOgorICAgIExvY2sg
bV9tdXRleDsKKyAgICBUIG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvTWFpblRocmVhZERhdGEuaCBiL1NvdXJjZS9XVEYvd3RmL01h
aW5UaHJlYWREYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZkODhjMjBhYzczYTk5OTRmY2RlMmJjYjI0NTY3
ZTkxZWIzODRlNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL01haW5UaHJlYWRE
YXRhLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJZ2FsaWEs
IFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xh
c3MgTWFpblRocmVhZERhdGEgeworcHVibGljOgorICAgIE1haW5UaHJlYWREYXRhKCkgeyB9Cisg
ICAgZXhwbGljaXQgTWFpblRocmVhZERhdGEoVCYmIGRhdGEpCisgICAgICAgIDogbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCisgICAgeyB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIHJldHVybiAmbV9kYXRhOworICAg
IH0KKworICAgIFQmIG9wZXJhdG9yKigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICByZXR1cm4gbV9kYXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICBU
IG1fZGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMwMzdhOWM5MDZjZTQxYzA3MGFjMjkzMTc1
ZTJkMzU5MWQ4YTFkNDkuLjg5ZmFmMDYwZDYzMzY4YzAwMGU5MDMxNTZjOGZmZjgzYTgxYzAxYzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxOS0wNy0xNiAgQWxpY2lhIEJveWEgR2FyY8OtYSAgPGFib3lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIERhdGFNdXRleCBhbmQgTWFpblRocmVhZERhdGEg
d3JhcHBlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5OTgzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIGEgdmVyeSBzaW1wbGUgdGVzdCB0aGF0IGNoZWNrcyB0aGF0IERhdGFNdXRleDxUPiBp
bmRlZWQgdGFrZXMKKyAgICAgICAgdGhlIGxvY2sgYW5kIGluZGVlZCBob2xkcyBkYXRhLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9EYXRhTXV0ZXguY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorCiAyMDE5LTA3LTExICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGZvbGxvdy11cCBmaXggdG8gcjI0NzM2NC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDYxOWU3OGQzOWZkZGQxMGNkZTViOTc3
ODIyMGEyNDdlMjBlZjZhMGMuLmZkOTAxMWE0YzdlMzc5NzRkN2U2NTZkMzYyZTg1Yjg0ZjBkOTgw
N2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMzIsNiArMzIsNyBAQCBzZXQo
VGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKICAgICBUZXN0cy9X
VEYvQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCiAgICAgVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5j
cHAKKyAgICBUZXN0cy9XVEYvRGF0YU11dGV4LmNwcAogICAgIFRlc3RzL1dURi9EYXRlTWF0aC5j
cHAKICAgICBUZXN0cy9XVEYvRGVxdWUuY3BwCiAgICAgVGVzdHMvV1RGL0VudW1UcmFpdHMuY3Bw
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9EYXRhTXV0ZXguY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44YWIzNGQwOTcyZmMwNWI3MTAwYmIxY2MzM2E2ODkzZjIwN2FiNmY1Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRGF0YU11dGV4LmNwcApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IElnYWxpYSwgUy5MLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvRGF0YU11dGV4Lmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXVEY7CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RydWN0IE15U3RydWN0
dXJlIHsKKyAgICBpbnQgbnVtYmVyOworfTsKK0RhdGFNdXRleDxNeVN0cnVjdHVyZT4gbXlEYXRh
TXV0ZXg7CisKK1RFU1QoV1RGX0RhdGFNdXRleCwgVGFraW5nVGhlTXV0ZXgpCit7CisgICAgTG9j
ayogbXV0ZXg7CisgICAgeworICAgICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRX
cmFwcGVyIHdyYXBwZXIobXlEYXRhTXV0ZXgpOworICAgICAgICBtdXRleCA9ICZ3cmFwcGVyLm11
dGV4KCk7CisgICAgICAgIEFTU0VSVF9UUlVFKG11dGV4LT5pc0hlbGQoKSk7CisgICAgICAgIHdy
YXBwZXItPm51bWJlciA9IDU7CisgICAgfQorICAgIEFTU0VSVF9GQUxTRShtdXRleC0+aXNIZWxk
KCkpOworCisgICAgeworICAgICAgICBEYXRhTXV0ZXg8TXlTdHJ1Y3R1cmU+OjpMb2NrZWRXcmFw
cGVyIHdyYXBwZXIobXlEYXRhTXV0ZXgpOworICAgICAgICBFWFBFQ1RfRVEod3JhcHBlci0+bnVt
YmVyLCA1KTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
      

    </bug>

</bugzilla>