<?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>79252</bug_id>
          
          <creation_ts>2012-02-22 09:54:02 -0800</creation_ts>
          <short_desc>[WK2][GTK] WebProcess SIGSEVs due to incorrect clipboard handling</short_desc>
          <delta_ts>2012-02-23 08:38:13 -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>WebKitGTK</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>76070</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>562065</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-02-22 09:54:02 -0800</bug_when>
    <thetext>WebEditorClient::setSelectionPrimaryClipboardIfNeeded passes a Frame as argument to a callback executed after writing some contents to the clipboard. The problem is that if the WebProcess closes the related to that Frame before the callback is executed then the Frame is destroyed causing a SIGSEV when the callback is executed.

This is easy to reproduce in Debug builds repeatedly running the TestWebViewEditor unit tests. It will fail after 3-4 correct executions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562072</commentid>
    <comment_count>1</comment_count>
      <attachid>128235</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-02-22 09:58:50 -0800</bug_when>
    <thetext>Created attachment 128235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562088</commentid>
    <comment_count>2</comment_count>
      <attachid>128235</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-22 10:11:55 -0800</bug_when>
    <thetext>Comment on attachment 128235
Patch

Looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562095</commentid>
    <comment_count>3</comment_count>
      <attachid>128235</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-22 10:16:07 -0800</bug_when>
    <thetext>Comment on attachment 128235
Patch

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:141
&gt;  static Frame* frameSettingClipboard;
&gt;  static void collapseSelection(GtkClipboard* clipboard, Frame* frame)
&gt;  {
&gt; -    if (frameSettingClipboard &amp;&amp; frameSettingClipboard == frame)
&gt; -        return;
&gt; +    if (!frameSettingClipboard || frameSettingClipboard != frame)
&gt; +        // Collapse the selection without clearing it.
&gt; +        frame-&gt;selection()-&gt;setBase(frame-&gt;selection()-&gt;extent(), frame-&gt;selection()-&gt;affinity());
&gt;  
&gt; -    // Collapse the selection without clearing it.
&gt; -    ASSERT(frame);
&gt; -    frame-&gt;selection()-&gt;setBase(frame-&gt;selection()-&gt;extent(), frame-&gt;selection()-&gt;affinity());
&gt; +    frame-&gt;deref();
&gt;  }

I think that manually referencing the frame here is the wrong approach. Intead of hanging on to the frame, WebKit1 keeps a reference to the WebView and uses corePage-&gt;focusController()-&gt;focusedOrMainFrame(). Another approach is to figure out a way to detect when the frame dies and to clear frameSettingClipboard then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562120</commentid>
    <comment_count>4</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-02-22 10:31:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I think that manually referencing the frame here is the wrong approach. Intead of hanging on to the frame, WebKit1 keeps a reference to the WebView and uses corePage-&gt;focusController()-&gt;focusedOrMainFrame(). Another approach is to figure out a way to detect when the frame dies and to clear frameSettingClipboard then.

In WebKit1 we&apos;re not exactly keeping a reference to the WebView, it&apos;s just a pointer. The difference is that WebKit1 uses g_cclosure_new_object() that ensures that the callback is not called once the object passed as argument is unref&apos;ed.

Anyway the platform independent WK2 WebEditorClient.cpp has a WebEditorClient::pageDestroyed() method. What about adding there a call (#ifdef&apos;ed for GTK) to clear the frameSettingClipboard ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562126</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-22 10:37:34 -0800</bug_when>
    <thetext>(In reply to comment #4)

&gt; Anyway the platform independent WK2 WebEditorClient.cpp has a WebEditorClient::pageDestroyed() method. What about adding there a call (#ifdef&apos;ed for GTK) to clear the frameSettingClipboard ?

That makes sense, but in that case you should keep a reference to the Page instead of the Frame. A Frame can be destroyed before its owning Page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562271</commentid>
    <comment_count>6</comment_count>
      <attachid>128268</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-02-22 12:42:37 -0800</bug_when>
    <thetext>Created attachment 128268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562274</commentid>
    <comment_count>7</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-02-22 12:45:28 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=128268) [details]
&gt; Patch

This new approach uses a frame destructor object in combination with gclosure finalization notifications to fix the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562303</commentid>
    <comment_count>8</comment_count>
      <attachid>128268</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-22 13:10:20 -0800</bug_when>
    <thetext>Comment on attachment 128268
Patch

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

Great use of FrameDestructionObserver.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:136
&gt; +    explicit EditorClientFrameDestructionObserver(Frame* frame, GClosure* closure)

I think you can omit &quot;explicit&quot; here.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:143
&gt; +    void frameDestroyed() { g_closure_invalidate(m_closure); FrameDestructionObserver::frameDestroyed(); }

I&apos;d prefer this to be two spread over multiple lines.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:150
&gt; +        EditorClientFrameDestructionObserver* observer = static_cast&lt;EditorClientFrameDestructionObserver*&gt;(data);
&gt; +        delete observer;

You can just do:

delete data;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563130</commentid>
    <comment_count>9</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2012-02-23 08:38:13 -0800</bug_when>
    <thetext>Committed r108631: &lt;http://trac.webkit.org/changeset/108631&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128235</attachid>
            <date>2012-02-22 09:58:50 -0800</date>
            <delta_ts>2012-02-22 12:42:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79252-20120222185848.patch</filename>
            <type>text/plain</type>
            <size>2698</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzVkMzE3ZTYxNmNhYTcw
NmUxYzY5MzdhMjJkMDkyOGM5ZmJhOTQ2Yy4uMTBlZjMzZTc5NDVjYjBjYTM5N2RmNzEzMjc1ODlm
OWUxYzU0MWQ5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAyLTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdW0dU
S10gV2ViUHJvY2VzcyBTSUdTRVZzIGR1ZSB0byBpbmNvcnJlY3QgY2xpcGJvYXJkIGhhbmRsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTI1Mgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHJlZmVyZW5jZSB0byB0aGUgRnJhbWUgdG8gZW5z
dXJlIHRoYXQgaXQgd2lsbAorICAgICAgICBzdGlsbCBiZSBhbGl2ZSB3aGVuIHRoZSBjb2xsYXBz
ZVNlbGVjdGlvbiBjYWxsYmFjayBpcyBleGVjdXRlZC4KKworICAgICAgICBUaGlzIGNoYW5nZSBp
cyBhbHJlYWR5IGNvdmVyZWQgYnkgdGhlIFRlc3RXZWJWaWV3RWRpdG9yIHVuaXQKKyAgICAgICAg
dGVzdHMsIHRoZXkgaGFuZyAoYmVjYXVzZSBXZWJQcm9jZXNzIGRpZXMpIHdpdGhvdXQgdGhpcyBw
YXRjaCBpbgorICAgICAgICBEZWJ1ZyBidWlsZHMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb2xsYXBzZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6
c2V0U2VsZWN0aW9uUHJpbWFyeUNsaXBib2FyZElmTmVlZGVkKToKKwogMjAxMi0wMi0yMSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10g
TnVsbCBSZXNvdXJjZUVycm9ycyBhcmUgZW5jb2RlZC9kZWNvZGVkIGFzIGVtcHR5IFJlc291cmNl
RXJyb3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAppbmRleCBmNTllNjk3
MDA3YTk4MjgwNzdhZjkyNDcxZTFlMWU0ZGJiNDgxZGM1Li5kYjRmYTY3OGQwYzU5M2I5OWJhYmFi
ODY4NzAzYzdlNzk0ODM1NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5j
cHAKQEAgLTEzMywxMiArMTMzLDExIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpoYW5kbGVJbnB1
dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopCiBzdGF0aWMgRnJhbWUqIGZyYW1lU2V0dGlu
Z0NsaXBib2FyZDsKIHN0YXRpYyB2b2lkIGNvbGxhcHNlU2VsZWN0aW9uKEd0a0NsaXBib2FyZCog
Y2xpcGJvYXJkLCBGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYgKGZyYW1lU2V0dGluZ0NsaXBib2Fy
ZCAmJiBmcmFtZVNldHRpbmdDbGlwYm9hcmQgPT0gZnJhbWUpCi0gICAgICAgIHJldHVybjsKKyAg
ICBpZiAoIWZyYW1lU2V0dGluZ0NsaXBib2FyZCB8fCBmcmFtZVNldHRpbmdDbGlwYm9hcmQgIT0g
ZnJhbWUpCisgICAgICAgIC8vIENvbGxhcHNlIHRoZSBzZWxlY3Rpb24gd2l0aG91dCBjbGVhcmlu
ZyBpdC4KKyAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRCYXNlKGZyYW1lLT5zZWxlY3Rp
b24oKS0+ZXh0ZW50KCksIGZyYW1lLT5zZWxlY3Rpb24oKS0+YWZmaW5pdHkoKSk7CiAKLSAgICAv
LyBDb2xsYXBzZSB0aGUgc2VsZWN0aW9uIHdpdGhvdXQgY2xlYXJpbmcgaXQuCi0gICAgQVNTRVJU
KGZyYW1lKTsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNldEJhc2UoZnJhbWUtPnNlbGVjdGlv
bigpLT5leHRlbnQoKSwgZnJhbWUtPnNlbGVjdGlvbigpLT5hZmZpbml0eSgpKTsKKyAgICBmcmFt
ZS0+ZGVyZWYoKTsKIH0KICNlbmRpZgogCkBAIC0xNTUsNiArMTU0LDcgQEAgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OnNldFNlbGVjdGlvblByaW1hcnlDbGlwYm9hcmRJZk5lZWRlZChGcmFtZSogZnJh
bWUpCiAgICAgZGF0YU9iamVjdC0+c2V0UmFuZ2UoZnJhbWUtPnNlbGVjdGlvbigpLT50b05vcm1h
bGl6ZWRSYW5nZSgpKTsKIAogICAgIGZyYW1lU2V0dGluZ0NsaXBib2FyZCA9IGZyYW1lOworICAg
IGZyYW1lLT5yZWYoKTsKICAgICBHQ2xvc3VyZSogY2FsbGJhY2sgPSBnX2NjbG9zdXJlX25ldyhH
X0NBTExCQUNLKGNvbGxhcHNlU2VsZWN0aW9uKSwgZnJhbWUsIDApOwogICAgIGdfY2xvc3VyZV9z
ZXRfbWFyc2hhbChjYWxsYmFjaywgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQpOwogICAg
IFBhc3RlYm9hcmRIZWxwZXI6OmRlZmF1bHRQYXN0ZWJvYXJkSGVscGVyKCktPndyaXRlQ2xpcGJv
YXJkQ29udGVudHMoY2xpcGJvYXJkLCBQYXN0ZWJvYXJkSGVscGVyOjpEb05vdEluY2x1ZGVTbWFy
dFBhc3RlLCBjYWxsYmFjayk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128268</attachid>
            <date>2012-02-22 12:42:37 -0800</date>
            <delta_ts>2012-02-22 13:10:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79252-20120222214235.patch</filename>
            <type>text/plain</type>
            <size>3644</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNzVkMzE3ZTYxNmNhYTcw
NmUxYzY5MzdhMjJkMDkyOGM5ZmJhOTQ2Yy4uNmEwMGY0NjE1ZjNiMzk5YjE2NWRmZjRlYzA0ZDg2
ZGJjN2U1MjBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTAyLTIyICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtXSzJdW0dU
S10gV2ViUHJvY2VzcyBTSUdTRVZzIGR1ZSB0byBpbmNvcnJlY3QgY2xpcGJvYXJkIGhhbmRsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTI1Mgor
CisgICAgICAgIERvIG5vdCBleGVjdXRlIGNsaXBib2FyZCBjYWxsYmFja3MgYWZ0ZXIgdGhlIEZy
YW1lIGFzc29jaWF0ZWQgd2l0aAorICAgICAgICBpdCBpcyBkZXN0cm95ZWQuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5IHRoZSBUZXN0V2ViVmlld0VkaXRvciB1
bml0IHRlc3RzCisgICAgICAgIChhbW9uZyBvdGhlcnMpLCB0aGV5IGhhbmcgKGJlY2F1c2UgV2Vi
UHJvY2VzcyBkaWVzKSB3aXRob3V0IHRoaXMKKyAgICAgICAgcGF0Y2ggaW4gRGVidWcgYnVpbGRz
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKEVkaXRvckNsaWVudEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
cik6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZl
cjo6RWRpdG9yQ2xpZW50RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOjpmcmFtZURlc3Ryb3llZCk6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjo6
ZGVzdHJveU9uQ2xvc3VyZUZpbmFsaXphdGlvbik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnNldFNlbGVjdGlvblByaW1hcnlDbGlwYm9hcmRJ
Zk5lZWRlZCk6CisKIDIwMTItMDItMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE51bGwgUmVzb3VyY2VFcnJvcnMgYXJlIGVuY29k
ZWQvZGVjb2RlZCBhcyBlbXB0eSBSZXNvdXJjZUVycm9ycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRv
ckNsaWVudEd0ay5jcHAKaW5kZXggZjU5ZTY5NzAwN2E5ODI4MDc3YWY5MjQ3MWUxZTFlNGRiYjQ4
MWRjNS4uZDliYzIyY2MxZmE1OGNhNjYzYWU5MjRhZTcyY2ExNGMyNmZkYWI4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9y
Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVk
ZSAiV2ViRWRpdG9yQ2xpZW50LmgiCiAKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgpAQCAtMTMwLDcgKzEzMSwyOCBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6aGFuZGxlSW5w
dXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKQogfQogCiAjaWYgUExBVEZPUk0oWDExKQor
Y2xhc3MgRWRpdG9yQ2xpZW50RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyIDogRnJhbWVEZXN0cnVj
dGlvbk9ic2VydmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBFZGl0b3JDbGllbnRGcmFtZURl
c3RydWN0aW9uT2JzZXJ2ZXIoRnJhbWUqIGZyYW1lLCBHQ2xvc3VyZSogY2xvc3VyZSkKKyAgICAg
ICAgOiBGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIoZnJhbWUpCisgICAgICAgICwgbV9jbG9zdXJl
KGNsb3N1cmUpCisgICAgeworICAgICAgICBnX2Nsb3N1cmVfYWRkX2ZpbmFsaXplX25vdGlmaWVy
KG1fY2xvc3VyZSwgdGhpcywgZGVzdHJveU9uQ2xvc3VyZUZpbmFsaXphdGlvbik7CisgICAgfQor
CisgICAgdm9pZCBmcmFtZURlc3Ryb3llZCgpIHsgZ19jbG9zdXJlX2ludmFsaWRhdGUobV9jbG9z
dXJlKTsgRnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyOjpmcmFtZURlc3Ryb3llZCgpOyB9Citwcml2
YXRlOgorICAgIEdDbG9zdXJlKiBtX2Nsb3N1cmU7CisKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95
T25DbG9zdXJlRmluYWxpemF0aW9uKGdwb2ludGVyIGRhdGEsIEdDbG9zdXJlKiBjbG9zdXJlKQor
ICAgIHsKKyAgICAgICAgRWRpdG9yQ2xpZW50RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKiBvYnNl
cnZlciA9IHN0YXRpY19jYXN0PEVkaXRvckNsaWVudEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcio+
KGRhdGEpOworICAgICAgICBkZWxldGUgb2JzZXJ2ZXI7CisgICAgfQorfTsKKwogc3RhdGljIEZy
YW1lKiBmcmFtZVNldHRpbmdDbGlwYm9hcmQ7CisKIHN0YXRpYyB2b2lkIGNvbGxhcHNlU2VsZWN0
aW9uKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKGZy
YW1lU2V0dGluZ0NsaXBib2FyZCAmJiBmcmFtZVNldHRpbmdDbGlwYm9hcmQgPT0gZnJhbWUpCkBA
IC0xNTYsNiArMTc4LDEwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpzZXRTZWxlY3Rpb25Qcmlt
YXJ5Q2xpcGJvYXJkSWZOZWVkZWQoRnJhbWUqIGZyYW1lKQogCiAgICAgZnJhbWVTZXR0aW5nQ2xp
cGJvYXJkID0gZnJhbWU7CiAgICAgR0Nsb3N1cmUqIGNhbGxiYWNrID0gZ19jY2xvc3VyZV9uZXco
R19DQUxMQkFDSyhjb2xsYXBzZVNlbGVjdGlvbiksIGZyYW1lLCAwKTsKKyAgICAvLyBUaGlzIG9i
c2VydmVyIHdpbGwgYmUgc2VsZi1kZXN0cm95ZWQgb24gY2xvc3VyZSBmaW5hbGl6YXRpb24sCisg
ICAgLy8gdGhhdCB3aWxsIGhhcHBlbiBlaXRoZXIgYWZ0ZXIgY2xvc3VyZSBleGVjdXRpb24gb3Ig
YWZ0ZXIKKyAgICAvLyBjbG9zdXJlIGludmFsaWRhdGlvbi4KKyAgICBuZXcgRWRpdG9yQ2xpZW50
RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKGZyYW1lLCBjYWxsYmFjayk7CiAgICAgZ19jbG9zdXJl
X3NldF9tYXJzaGFsKGNhbGxiYWNrLCBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fVk9JRCk7CiAg
ICAgUGFzdGVib2FyZEhlbHBlcjo6ZGVmYXVsdFBhc3RlYm9hcmRIZWxwZXIoKS0+d3JpdGVDbGlw
Ym9hcmRDb250ZW50cyhjbGlwYm9hcmQsIFBhc3RlYm9hcmRIZWxwZXI6OkRvTm90SW5jbHVkZVNt
YXJ0UGFzdGUsIGNhbGxiYWNrKTsKICAgICBmcmFtZVNldHRpbmdDbGlwYm9hcmQgPSAwOwo=
</data>
<flag name="review"
          id="130591"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>