<?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>144046</bug_id>
          
          <creation_ts>2015-04-22 09:30:40 -0700</creation_ts>
          <short_desc>[UNIX] Simplify the file descriptor handling in SharedMemory</short_desc>
          <delta_ts>2015-04-23 05:27:25 -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>WebKit2</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1087415</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-22 09:30:40 -0700</bug_when>
    <thetext>There are some weird things in SharedMemoryUnix when handling the ownership of the file descriptor. It could be simplified and clarified using IPC::Attachment instead of fd + size</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087419</commentid>
    <comment_count>1</comment_count>
      <attachid>251329</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-22 09:41:02 -0700</bug_when>
    <thetext>Created attachment 251329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087450</commentid>
    <comment_count>2</comment_count>
      <attachid>251329</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-22 10:44:38 -0700</bug_when>
    <thetext>Comment on attachment 251329
Patch

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

Looks OK.

&gt; Source/WebKit2/Platform/IPC/Attachment.h:59
&gt; +    Attachment(const Attachment&amp;) = default;
&gt; +    Attachment&amp; operator=(Attachment&amp;) = default;

I think you want = delete here, not = default. It doesn’t seem OK to just copy a file descriptor!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087752</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 00:07:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 251329 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251329&amp;action=review
&gt; 
&gt; Looks OK.

Thanks for the review.

&gt; &gt; Source/WebKit2/Platform/IPC/Attachment.h:59
&gt; &gt; +    Attachment(const Attachment&amp;) = default;
&gt; &gt; +    Attachment&amp; operator=(Attachment&amp;) = default;
&gt; 
&gt; I think you want = delete here, not = default. It doesn’t seem OK to just
&gt; copy a file descriptor!

Yes, I first tried to make the class non copyable, and release the fd in the destructor to get rid of the dispose() method and the explicit attachment dispose made by the ArgumentEncoder, ArgumentDecoder and ConnectionUnix. But it was not possible, or I didn&apos;t find the way. Encoding/decoding attachments is adding them to the encoder/decoder class that take the ownership of the file descriptors until they are passed to the platform specific send/receive IPC methods. The thing is that Attachment::encode() is const and does encoder.addAttachment(*this); Even if we change ArgumentEncoder::addAttachment to receive an Attachment&amp;&amp; we can&apos;t WTF::move(*this) in the const encode method. I&apos;m not a C++ expert, so maybe there&apos;s a way. In the end I forgot about that part and left the explicit dispose, but avoiding the manual fd = -1 in several places and renaming the confusing adoptFrom, releaseTo methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087760</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 00:30:04 -0700</bug_when>
    <thetext>Committed r183176: &lt;http://trac.webkit.org/changeset/183176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087794</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 05:11:38 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Comment on attachment 251329 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=251329&amp;action=review
&gt; &gt; 
&gt; &gt; Looks OK.
&gt; 
&gt; Thanks for the review.
&gt; 
&gt; &gt; &gt; Source/WebKit2/Platform/IPC/Attachment.h:59
&gt; &gt; &gt; +    Attachment(const Attachment&amp;) = default;
&gt; &gt; &gt; +    Attachment&amp; operator=(Attachment&amp;) = default;
&gt; &gt; 
&gt; &gt; I think you want = delete here, not = default. It doesn’t seem OK to just
&gt; &gt; copy a file descriptor!
&gt; 
&gt; Yes, I first tried to make the class non copyable, and release the fd in the
&gt; destructor to get rid of the dispose() method and the explicit attachment
&gt; dispose made by the ArgumentEncoder, ArgumentDecoder and ConnectionUnix. But
&gt; it was not possible, or I didn&apos;t find the way. Encoding/decoding attachments
&gt; is adding them to the encoder/decoder class that take the ownership of the
&gt; file descriptors until they are passed to the platform specific send/receive
&gt; IPC methods. The thing is that Attachment::encode() is const and does
&gt; encoder.addAttachment(*this); Even if we change
&gt; ArgumentEncoder::addAttachment to receive an Attachment&amp;&amp; we can&apos;t
&gt; WTF::move(*this) in the const encode method. I&apos;m not a C++ expert, so maybe
&gt; there&apos;s a way. In the end I forgot about that part and left the explicit
&gt; dispose, but avoiding the manual fd = -1 in several places and renaming the
&gt; confusing adoptFrom, releaseTo methods.

Zan suggested to make the copy constructor and assignment private and use it only in ::encode() doing encoder.addAttachment(Attachment(*this)); That way we can ensure that any public assignment is a move. We also need to make the file descriptor member mutable and explicitly set to -1 in ::encode() since the ownership is transfered to the encoder. It&apos;s tricky, but it works. I&apos;ll submit a new bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087799</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-23 05:27:25 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=144096</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251329</attachid>
            <date>2015-04-22 09:41:02 -0700</date>
            <delta_ts>2015-04-22 10:44:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-shared-memory-attachment.diff</filename>
            <type>text/plain</type>
            <size>10401</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA5NTQxMTgzLi42ZmFmZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTUtMDQtMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtVTklYXSBTaW1wbGlmeSB0aGUgZmlsZSBkZXNjcmlwdG9yIGhhbmRsaW5n
IGluIFNoYXJlZE1lbW9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ0MDQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU2ltcGxpZnkgdGhlIGZpbGUgZGVzY3JpcHRvciBoYW5kbGluZyBhbmQgY2xhcmlm
eSBpdHMgb3duZXJzaGlwIGJ5CisgICAgICAgIHVzaW5nIElQQzo6QXR0YWNobWVudCBpbiBTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBpbnN0ZWFkIG9mIGZkIGFuZAorICAgICAgICBzaXplIG1lbWJlcnMu
IFNoYXJlZE1lbW9yeTo6SGFuZGxlOjphZG9wdEZyb21BdHRhY2htZW50KCkgaGFzIGJlZW4KKyAg
ICAgICAgcmVuYW1lZCBhcyBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6YWRvcHRBdHRhY2htZW50KCkg
YW5kIHJlY2VpdmVzIGFuCisgICAgICAgIElQQzo6QXR0YWNobWVudC4gQW5kIFNoYXJlZE1lbW9y
eTo6SGFuZGxlOjpyZWxlYXNlVG9BdHRhY2htZW50KCkKKyAgICAgICAgaGFzIGJlZW4gcmVuYW1l
ZCBhcyBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6cmVsZWFzZUF0dGFjaG1lbnQoKS4KKworICAgICAg
ICAqIFBsYXRmb3JtL0lQQy9BdHRhY2htZW50Lmg6IEFkZCBtb3ZlIGNvbnN0cnVjdG9yIGFuZCBt
b3ZlIGFzc2lnbmVkIG9wZXJhdG9yLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
Lmg6CisgICAgICAgIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwpOiBBIGZpbGUg
ZGVzY3JpcHRvciBpcyBudWxsCisgICAgICAgIHdoZW4gaXQncyAtMSBubyAwLgorICAgICAgICAq
IFBsYXRmb3JtL0lQQy91bml4L0F0dGFjaG1lbnRVbml4LmNwcDoKKyAgICAgICAgKElQQzo6QXR0
YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6Om9wZXJhdG9y
PSk6CisgICAgICAgIChJUEM6OkF0dGFjaG1lbnQ6OmRpc3Bvc2UpOiBSZXNldCB0aGUgZmlsZSBk
ZXNjcmlwdG9yIGFmdGVyCisgICAgICAgIGNsb3NpbmcgaXQuCisgICAgICAgICogUGxhdGZvcm0v
SVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpw
cm9jZXNzTWVzc2FnZSk6IFVzZQorICAgICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6YWRvcHRB
dHRhY2htZW50KCkgdGhhdCByZWNlaXZlcyBhbgorICAgICAgICBJUEM6OkF0dGFjaG1lbnQgbm93
LgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKTogVXNlCisg
ICAgICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpyZWxlYXNlQXR0YWNobWVudCgpLgorICAgICAg
ICAqIFBsYXRmb3JtL1NoYXJlZE1lbW9yeS5oOgorICAgICAgICAqIFBsYXRmb3JtL3VuaXgvU2hh
cmVkTWVtb3J5VW5peC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxl
OjpIYW5kbGUpOiBSZW1vdmUgaW5pdGlhbGl6ZXJzIGZvcgorICAgICAgICBmaWxlIGRlc2NyaXB0
b3IgYW5kIHNpemUgbWVtYmVycy4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5k
bGU6OmNsZWFyKTogRGlzcG9zZSB0aGUgYXR0YWNobWVudC4KKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGU6OmlzTnVsbCk6IEhhbmRsZSBpcyBudWxsIGlmIHRoZQorICAgICAg
ICBhdHRhY2htZW50IGZpbGUgZGVzY3JpcHRvciBpcyAtMS4KKyAgICAgICAgKFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGU6OmVuY29kZSk6IFVzZSByZWxlYXNlQXR0YWNobWVudCgpLgorICAg
ICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlKTogVXNlIGFkb3B0QXR0
YWNobWVudCgpLgorICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZTo6cmVsZWFz
ZUF0dGFjaG1lbnQpOiBJbXBsZW1lbnQgaXQKKyAgICAgICAgdXNpbmcgbW92ZS4KKyAgICAgICAg
KFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmFkb3B0QXR0YWNobWVudCk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6Om1hcCk6IFVzZQorICAgICAgICBJUEM6OkF0
dGFjaG1lbnQ6OnJlbGVhc2VGaWxlRGVzY3JpcHRvcigpIGluc3RlYWQgb2YgbWFudWFsbHkKKyAg
ICAgICAgY2hhbmdpbmcgdGhlIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6U2hhcmVkTWVtb3J5
OjpjcmVhdGVIYW5kbGUpOiBJbml0aWFsaXplIHRoZSBoYW5kbGUKKyAgICAgICAgYXR0YWNobWVu
dCB3aXRoIHRoZSBkdXBsaWNhdGVkIGZpbGUgZGVzY3JpcHRvciBhbmQgc2l6ZS4KKwogMjAxNS0w
NC0yMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBb
TWFjXSBVc2Ugb25lIHBsYXliYWNrIHRhcmdldCBmb3IgYWxsIHdlYiBwcm9jZXNzZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXR0YWNobWVudC5oCmluZGV4IGIwZjFkY2UuLmE2YjE1OTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9BdHRhY2htZW50LmgKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0F0dGFjaG1lbnQuaApAQCAtNTMsNiArNTMs
MTAgQEAgcHVibGljOgogI2lmIE9TKERBUldJTikKICAgICBBdHRhY2htZW50KG1hY2hfcG9ydF9u
YW1lX3QgcG9ydCwgbWFjaF9tc2dfdHlwZV9uYW1lX3QgZGlzcG9zaXRpb24pOwogI2VsaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCisgICAgQXR0YWNobWVudChBdHRhY2htZW50JiYpOworICAg
IEF0dGFjaG1lbnQmIG9wZXJhdG9yPShBdHRhY2htZW50JiYpOworICAgIEF0dGFjaG1lbnQoY29u
c3QgQXR0YWNobWVudCYpID0gZGVmYXVsdDsKKyAgICBBdHRhY2htZW50JiBvcGVyYXRvcj0oQXR0
YWNobWVudCYpID0gZGVmYXVsdDsKICAgICBBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvciwg
c2l6ZV90KTsKICAgICBBdHRhY2htZW50KGludCBmaWxlRGVzY3JpcHRvcik7CiAjZW5kaWYKQEAg
LTg1LDcgKzg5LDcgQEAgcHJpdmF0ZToKICAgICBtYWNoX3BvcnRfbmFtZV90IG1fcG9ydDsKICAg
ICBtYWNoX21zZ190eXBlX25hbWVfdCBtX2Rpc3Bvc2l0aW9uOwogI2VsaWYgVVNFKFVOSVhfRE9N
QUlOX1NPQ0tFVFMpCi0gICAgaW50IG1fZmlsZURlc2NyaXB0b3I7CisgICAgaW50IG1fZmlsZURl
c2NyaXB0b3IgeyAtMSB9OwogICAgIHNpemVfdCBtX3NpemU7CiAjZW5kaWYKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA0OTAzMTZlLi5jNjgwM2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKQEAgLTEyOSw3ICsxMjks
NyBAQCBwdWJsaWM6CiAgICAgcGlkX3QgcmVtb3RlUHJvY2Vzc0lEKCkgY29uc3Q7CiAjZWxpZiBV
U0UoVU5JWF9ET01BSU5fU09DS0VUUykKICAgICB0eXBlZGVmIGludCBJZGVudGlmaWVyOwotICAg
IHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRlbnRpZmllciBpZGVudGlmaWVyKSB7IHJl
dHVybiAhaWRlbnRpZmllcjsgfQorICAgIHN0YXRpYyBib29sIGlkZW50aWZpZXJJc051bGwoSWRl
bnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBpZGVudGlmaWVyID09IC0xOyB9CiAKICAgICBz
dHJ1Y3QgU29ja2V0UGFpciB7CiAgICAgICAgIGludCBjbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvdW5peC9BdHRhY2htZW50VW5peC5jcHAKaW5kZXggMDIyYzcy
ZC4uZTY3ZWQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgv
QXR0YWNobWVudFVuaXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4
L0F0dGFjaG1lbnRVbml4LmNwcApAQCAtNDUsMTAgKzQ1LDM1IEBAIEF0dGFjaG1lbnQ6OkF0dGFj
aG1lbnQoaW50IGZpbGVEZXNjcmlwdG9yKQogewogfQogCitBdHRhY2htZW50OjpBdHRhY2htZW50
KEF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQorICAgIDogbV90eXBlKGF0dGFjaG1lbnQubV90eXBl
KQorICAgICwgbV9maWxlRGVzY3JpcHRvcihhdHRhY2htZW50Lm1fZmlsZURlc2NyaXB0b3IpCisg
ICAgLCBtX3NpemUoYXR0YWNobWVudC5tX3NpemUpCit7CisgICAgYXR0YWNobWVudC5tX3R5cGUg
PSBVbmluaXRpYWxpemVkOworICAgIGF0dGFjaG1lbnQubV9maWxlRGVzY3JpcHRvciA9IC0xOwor
ICAgIGF0dGFjaG1lbnQubV9zaXplID0gMDsKK30KKworQXR0YWNobWVudCYgQXR0YWNobWVudDo6
b3BlcmF0b3I9KEF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQoreworICAgIG1fdHlwZSA9IGF0dGFj
aG1lbnQubV90eXBlOworICAgIGF0dGFjaG1lbnQubV90eXBlID0gVW5pbml0aWFsaXplZDsKKyAg
ICBtX2ZpbGVEZXNjcmlwdG9yID0gYXR0YWNobWVudC5tX2ZpbGVEZXNjcmlwdG9yOworICAgIGF0
dGFjaG1lbnQubV9maWxlRGVzY3JpcHRvciA9IC0xOworICAgIG1fc2l6ZSA9IGF0dGFjaG1lbnQu
bV9zaXplOworICAgIGF0dGFjaG1lbnQubV9zaXplID0gMDsKKworICAgIHJldHVybiAqdGhpczsK
K30KKwogdm9pZCBBdHRhY2htZW50OjpkaXNwb3NlKCkKIHsKLSAgICBpZiAobV9maWxlRGVzY3Jp
cHRvciAhPSAtMSkKLSAgICAgICAgY2xvc2VXaXRoUmV0cnkobV9maWxlRGVzY3JpcHRvcik7Cisg
ICAgaWYgKG1fZmlsZURlc2NyaXB0b3IgPT0gLTEpCisgICAgICAgIHJldHVybjsKKworICAgIGNs
b3NlV2l0aFJldHJ5KG1fZmlsZURlc2NyaXB0b3IpOworICAgIG1fZmlsZURlc2NyaXB0b3IgPSAt
MTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKaW5kZXggYjYzODgyZS4uZTg4YmE1OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVu
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25V
bml4LmNwcApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgQ29ubmVjdGlvbjo6cHJvY2Vzc01lc3Nh
Z2UoKQogICAgICAgICB9CiAKICAgICAgICAgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBo
YW5kbGU7Ci0gICAgICAgIGhhbmRsZS5hZG9wdEZyb21BdHRhY2htZW50KG1fZmlsZURlc2NyaXB0
b3JzW2F0dGFjaG1lbnRGaWxlRGVzY3JpcHRvckNvdW50IC0gMV0sIGF0dGFjaG1lbnRJbmZvW2F0
dGFjaG1lbnRDb3VudF0uZ2V0U2l6ZSgpKTsKKyAgICAgICAgaGFuZGxlLmFkb3B0QXR0YWNobWVu
dChJUEM6OkF0dGFjaG1lbnQobV9maWxlRGVzY3JpcHRvcnNbYXR0YWNobWVudEZpbGVEZXNjcmlw
dG9yQ291bnQgLSAxXSwgYXR0YWNobWVudEluZm9bYXR0YWNobWVudENvdW50XS5nZXRTaXplKCkp
KTsKIAogICAgICAgICBvb2xNZXNzYWdlQm9keSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjptYXAo
aGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAg
ICAgICBpZiAoIW9vbE1lc3NhZ2VCb2R5KSB7CkBAIC00NDUsNyArNDQ1LDcgQEAgYm9vbCBDb25u
ZWN0aW9uOjpzZW5kT3V0Z29pbmdNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlRW5jb2Rl
cj4gZW5jb2RlcikKIAogICAgICAgICBtZW1jcHkob29sTWVzc2FnZUJvZHktPmRhdGEoKSwgZW5j
b2Rlci0+YnVmZmVyKCksIGVuY29kZXItPmJ1ZmZlclNpemUoKSk7CiAKLSAgICAgICAgYXR0YWNo
bWVudHMuYXBwZW5kKGhhbmRsZS5yZWxlYXNlVG9BdHRhY2htZW50KCkpOworICAgICAgICBhdHRh
Y2htZW50cy5hcHBlbmQoaGFuZGxlLnJlbGVhc2VBdHRhY2htZW50KCkpOwogICAgIH0KIAogICAg
IHN0cnVjdCBtc2doZHIgbWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL1NoYXJlZE1lbW9yeS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVkTWVtb3J5
LmgKaW5kZXggNGRiNzQ1Mi4uZTQ5ZmVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vU2hhcmVk
TWVtb3J5LmgKQEAgLTY5LDE3ICs2OSwxNyBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBib29s
IGRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYsIEhhbmRsZSYpOwogCiAjaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCi0gICAgICAgIElQQzo6QXR0YWNobWVudCByZWxlYXNlVG9BdHRhY2ht
ZW50KCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgYWRvcHRGcm9tQXR0YWNobWVudChpbnQgZmlsZURl
c2NyaXB0b3IsIHNpemVfdCk7CisgICAgICAgIElQQzo6QXR0YWNobWVudCByZWxlYXNlQXR0YWNo
bWVudCgpIGNvbnN0OworICAgICAgICB2b2lkIGFkb3B0QXR0YWNobWVudChJUEM6OkF0dGFjaG1l
bnQmJik7CiAjZW5kaWYKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVk
TWVtb3J5OwogI2lmIE9TKERBUldJTikKICAgICAgICAgbXV0YWJsZSBtYWNoX3BvcnRfdCBtX3Bv
cnQ7CisgICAgICAgIHNpemVfdCBtX3NpemU7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKLSAgICAgICAgbXV0YWJsZSBpbnQgbV9maWxlRGVzY3JpcHRvcjsKKyAgICAgICAgbXV0YWJs
ZSBJUEM6OkF0dGFjaG1lbnQgbV9hdHRhY2htZW50OwogI2VuZGlmCi0gICAgICAgIHNpemVfdCBt
X3NpemU7CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0
ZShzaXplX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vdW5peC9TaGFy
ZWRNZW1vcnlVbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3VuaXgvU2hhcmVkTWVt
b3J5VW5peC5jcHAKaW5kZXggYmU1ZjFhMS4uMGM1YTJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vdW5peC9TaGFyZWRNZW1vcnlVbml4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS91bml4L1NoYXJlZE1lbW9yeVVuaXguY3BwCkBAIC00Nyw4ICs0Nyw2IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU2hhcmVkTWVtb3J5OjpIYW5kbGU6OkhhbmRsZSgpCi0g
ICAgOiBtX2ZpbGVEZXNjcmlwdG9yKC0xKQotICAgICwgbV9zaXplKDApCiB7CiB9CiAKQEAgLTU5
LDE4ICs1NywxNyBAQCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6fkhhbmRsZSgpCiAKIHZvaWQgU2hh
cmVkTWVtb3J5OjpIYW5kbGU6OmNsZWFyKCkKIHsKLSAgICBpZiAoIWlzTnVsbCgpKQotICAgICAg
ICBjbG9zZVdpdGhSZXRyeShtX2ZpbGVEZXNjcmlwdG9yKTsKKyAgICBtX2F0dGFjaG1lbnQuZGlz
cG9zZSgpOwogfQogCiBib29sIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjppc051bGwoKSBjb25zdAog
ewotICAgIHJldHVybiBtX2ZpbGVEZXNjcmlwdG9yID09IC0xOworICAgIHJldHVybiBtX2F0dGFj
aG1lbnQuZmlsZURlc2NyaXB0b3IoKSA9PSAtMTsKIH0KIAogdm9pZCBTaGFyZWRNZW1vcnk6Okhh
bmRsZTo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGVuY29kZXIgPDwgcmVsZWFzZVRvQXR0YWNobWVudCgpOworICAgIGVuY29kZXIgPDwgcmVsZWFz
ZUF0dGFjaG1lbnQoKTsKIH0KIAogYm9vbCBTaGFyZWRNZW1vcnk6OkhhbmRsZTo6ZGVjb2RlKElQ
Qzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBIYW5kbGUmIGhhbmRsZSkKQEAgLTgyLDI0ICs3
OSwyMSBAQCBib29sIFNoYXJlZE1lbW9yeTo6SGFuZGxlOjpkZWNvZGUoSVBDOjpBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIEhhbmRsZSYgaGFuZGxlKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
YXR0YWNobWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGhhbmRsZS5hZG9wdEZy
b21BdHRhY2htZW50KGF0dGFjaG1lbnQucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCksIGF0dGFjaG1l
bnQuc2l6ZSgpKTsKKyAgICBoYW5kbGUuYWRvcHRBdHRhY2htZW50KFdURjo6bW92ZShhdHRhY2ht
ZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUlQQzo6QXR0YWNobWVudCBTaGFyZWRNZW1v
cnk6OkhhbmRsZTo6cmVsZWFzZVRvQXR0YWNobWVudCgpIGNvbnN0CitJUEM6OkF0dGFjaG1lbnQg
U2hhcmVkTWVtb3J5OjpIYW5kbGU6OnJlbGVhc2VBdHRhY2htZW50KCkgY29uc3QKIHsKLSAgICBp
bnQgdGVtcCA9IG1fZmlsZURlc2NyaXB0b3I7Ci0gICAgbV9maWxlRGVzY3JpcHRvciA9IC0xOwot
ICAgIHJldHVybiBJUEM6OkF0dGFjaG1lbnQodGVtcCwgbV9zaXplKTsKKyAgICBBU1NFUlQoIWlz
TnVsbCgpKTsKKyAgICByZXR1cm4gV1RGOjptb3ZlKG1fYXR0YWNobWVudCk7CiB9CiAKLXZvaWQg
U2hhcmVkTWVtb3J5OjpIYW5kbGU6OmFkb3B0RnJvbUF0dGFjaG1lbnQoaW50IGZpbGVEZXNjcmlw
dG9yLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgU2hhcmVkTWVtb3J5OjpIYW5kbGU6OmFkb3B0QXR0YWNo
bWVudChJUEM6OkF0dGFjaG1lbnQmJiBhdHRhY2htZW50KQogewotICAgIEFTU0VSVCghbV9zaXpl
KTsKICAgICBBU1NFUlQoaXNOdWxsKCkpOwogCi0gICAgbV9maWxlRGVzY3JpcHRvciA9IGZpbGVE
ZXNjcmlwdG9yOwotICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9hdHRhY2htZW50ID0gV1RGOjpt
b3ZlKGF0dGFjaG1lbnQpOwogfQogCiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6
OmFsbG9jYXRlKHNpemVfdCBzaXplKQpAQCAtMTYxLDE1ICsxNTUsMTQgQEAgUmVmUHRyPFNoYXJl
ZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjptYXAoY29uc3QgSGFuZGxlJiBoYW5kbGUsIFByb3RlY3Rp
b24gcHJvdGVjdGkKIHsKICAgICBBU1NFUlQoIWhhbmRsZS5pc051bGwoKSk7CiAKLSAgICB2b2lk
KiBkYXRhID0gbW1hcCgwLCBoYW5kbGUubV9zaXplLCBhY2Nlc3NNb2RlTU1hcChwcm90ZWN0aW9u
KSwgTUFQX1NIQVJFRCwgaGFuZGxlLm1fZmlsZURlc2NyaXB0b3IsIDApOworICAgIHZvaWQqIGRh
dGEgPSBtbWFwKDAsIGhhbmRsZS5tX2F0dGFjaG1lbnQuc2l6ZSgpLCBhY2Nlc3NNb2RlTU1hcChw
cm90ZWN0aW9uKSwgTUFQX1NIQVJFRCwgaGFuZGxlLm1fYXR0YWNobWVudC5maWxlRGVzY3JpcHRv
cigpLCAwKTsKICAgICBpZiAoZGF0YSA9PSBNQVBfRkFJTEVEKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBpbnN0
YW5jZSA9IGFkb3B0UmVmKG5ldyBTaGFyZWRNZW1vcnkoKSk7CiAgICAgaW5zdGFuY2UtPm1fZGF0
YSA9IGRhdGE7Ci0gICAgaW5zdGFuY2UtPm1fZmlsZURlc2NyaXB0b3IgPSBoYW5kbGUubV9maWxl
RGVzY3JpcHRvcjsKLSAgICBpbnN0YW5jZS0+bV9zaXplID0gaGFuZGxlLm1fc2l6ZTsKLSAgICBo
YW5kbGUubV9maWxlRGVzY3JpcHRvciA9IC0xOworICAgIGluc3RhbmNlLT5tX2ZpbGVEZXNjcmlw
dG9yID0gaGFuZGxlLm1fYXR0YWNobWVudC5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKTsKKyAgICBp
bnN0YW5jZS0+bV9zaXplID0gaGFuZGxlLm1fYXR0YWNobWVudC5zaXplKCk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQogCkBAIC0yMDIsOCArMTk1LDcgQEAgYm9vbCBTaGFyZWRNZW1vcnk6OmNy
ZWF0ZUhhbmRsZShIYW5kbGUmIGhhbmRsZSwgUHJvdGVjdGlvbikKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICBoYW5kbGUubV9maWxlRGVzY3JpcHRvciA9
IGR1cGxpY2F0ZWRIYW5kbGU7Ci0gICAgaGFuZGxlLm1fc2l6ZSA9IG1fc2l6ZTsKKyAgICBoYW5k
bGUubV9hdHRhY2htZW50ID0gSVBDOjpBdHRhY2htZW50KGR1cGxpY2F0ZWRIYW5kbGUsIG1fc2l6
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
</data>
<flag name="review"
          id="276115"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>