<?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>122742</bug_id>
          
          <creation_ts>2013-10-14 01:44:28 -0700</creation_ts>
          <short_desc>Reintroduce PassRefPtr&lt;Event&gt; copy in ScopedEventQueue::dispatchEvent</short_desc>
          <delta_ts>2013-10-14 10:05:07 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>ap</cc>
    
    <cc>berto</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>939379</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-14 01:44:28 -0700</bug_when>
    <thetext>Reintroduce PassRefPtr&lt;Event&gt; copy in ScopedEventQueue::dispatchEvent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939388</commentid>
    <comment_count>1</comment_count>
      <attachid>214136</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-14 02:11:34 -0700</bug_when>
    <thetext>Created attachment 214136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939391</commentid>
    <comment_count>2</comment_count>
    <who name="Alberto Garcia">berto</who>
    <bug_when>2013-10-14 02:30:27 -0700</bug_when>
    <thetext>lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939455</commentid>
    <comment_count>3</comment_count>
      <attachid>214136</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-14 08:43:58 -0700</bug_when>
    <thetext>Comment on attachment 214136
Patch

Clearing flags on attachment: 214136

Committed r157401: &lt;http://trac.webkit.org/changeset/157401&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939456</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-10-14 08:44:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>939490</commentid>
    <comment_count>5</comment_count>
      <attachid>214136</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-14 10:05:07 -0700</bug_when>
    <thetext>Comment on attachment 214136
Patch

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

&gt; Source/WebCore/dom/ScopedEventQueue.cpp:86
&gt; +    // Passing the PassRefPtr&lt;Event&gt; object into the method call creates a new copy and also nullifies
&gt; +    // the original object, which is causing crashes in GCC-compiled code that only after that goes on
&gt; +    // to retrieve the Event&apos;s target, calling Event::target() on the now-null PassRefPtr&lt;Event&gt; object.
&gt; +    Node* node = event-&gt;target()-&gt;toNode();
&gt; +    EventDispatcher::dispatchEvent(node, event);

This is a totally confusing comment.

The bug is no surprise. If we put the node computation into the function call we’d be depending on undefined behavior. But the comment should say something more like this:

    // Put node in local variable to make sure we don’t dereference the event after it&apos;s nulled out to pass it in.

The mentions of things like &quot;create a new copy&quot; and &quot;crashes in GCC-compiled code&quot; make the comment just landed confusing and it&apos;s *so* long for such a minor issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214136</attachid>
            <date>2013-10-14 02:11:34 -0700</date>
            <delta_ts>2013-10-14 10:05:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122742-20131014021133.patch</filename>
            <type>text/plain</type>
            <size>3072</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUzMjI3M2U4ZWU4OWEx
OWJlYzQxYmM4ZmY5OTBhNmU0OTM4ZjQzOC4uYmVkOWVlNDM2MjE2YjI4NzdjYmJjNWJlYjEyMGIx
M2JiZDI2OGFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEzLTEwLTE0ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSZWludHJvZHVjZSBQ
YXNzUmVmUHRyPEV2ZW50PiBjb3B5IGluIFNjb3BlZEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjc0Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
YSBmb2xsb3ctdXAgdG8gcjE1NzIxOSB3aGljaCBpbnRyb2R1Y2VkIGEgd29ya2Fyb3VuZCBmb3Ig
dGhlIEdDQydzIHF1aXJreSBiZWhhdmlvciB0aGF0CisgICAgICAgIHdhcyByZXN1bHRpbmcgaW4g
Y3Jhc2hlcyBkdWUgdG8gdGhlIFBhc3NSZWZQdHI8RXZlbnQ+IG9iamVjdCBwYXNzZWQgdG8gRXZl
bnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50CisgICAgICAgIGJlaW5nIGNvcGllZCBhbmQgbnVs
bGlmaWVkIGZpcnN0IGJlZm9yZSByZXRyaWV2aW5nIHRoZSBFdmVudFRhcmdldCBvZiB0aGUgRXZl
bnQgb2JqZWN0IHdyYXBwZWQgaW4gdGhhdAorICAgICAgICBQYXNzUmVmUHRyLgorCisgICAgICAg
IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgYWRqdXN0ZWQgdG8gZmlyc3QgcmV0cmlldmUgdGhl
IHBvaW50ZXIgdG8gdGhlIEV2ZW50J3MgRXZlbnRUYXJnZXQgYW5kIHN0b3JlCisgICAgICAgIGl0
IGluIGEgbG9jYWwgdmFyaWFibGUuIFRoYXQgdmFyaWFibGUgaXMgdGhlbiBwYXNzZWQgYXMgdGhl
IGZpcnN0IHBhcmFtZXRlciB0byBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQsCisgICAg
ICAgIGFuZCB0aGUgUGFzc1JlZlB0cjxFdmVudD4gcGFzc2VkIGRpcmVjdGx5IGFzIHRoZSBzZWNv
bmQgcGFyYW1ldGVyLiBQcmV2aW91c2x5IHRoZSBwb2ludGVyIG9mIHRoYXQgUGFzc1JlZlB0cgor
ICAgICAgICBvYmplY3Qgd2FzIHBhc3NlZCBpbiwgd2l0aCBhIG5ldyBQYXNzUmVmUHRyIGJlaW5n
IGNyZWF0ZWQgd2hpY2ggd291bGQgaW5jcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUK
KyAgICAgICAgcmVmLWNvdW50ZWQgb2JqZWN0LiBQYXNzaW5nIGluIHRoZSBvcmlnaW5hbCBQYXNz
UmVmUHRyIGF2b2lkcyB0aGUgdW5uZWNlc3NhcnkgcmVmZXJlbmNlIGNvdW50IGluY3JlYXNlIGJ5
IGNyZWF0aW5nCisgICAgICAgIGEgY29weS4gVGhhdCBzdGlsbCBudWxsaWZpZXMgdGhlIG9yaWdp
bmFsIFBhc3NSZWZQdHIsIGJ1dCB0aGF0J3Mgbm90IGEgcHJvYmxlbSBhbnltb3JlLgorCisgICAg
ICAgICogZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVk
RXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudCk6CisKIDIwMTMtMTAtMTIgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgY29kZSB0byBmaW5kIGVsZW1lbnRzIGlu
IHNsaWRlciBzaGFkb3cgdHJlZSBpbnRvIFJhbmdlSW5wdXRUeXBlIGNsYXNzLCBzaW5jZSBpdCBj
cmVhdGVzIHRoYXQgdHJlZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2
ZW50UXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwCmlu
ZGV4IGUzZGFkZjE1ZTAyYjRlNmM2ODU3YTU2MGNhZDNmM2VlYmNlNmNkMjcuLjBjMGZhMjkwOTA1
ZTQ0ZjI3MjgyNzhlZDk1Zjg4ZmQ0MjljM2JjZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVk
RXZlbnRRdWV1ZS5jcHAKQEAgLTc5LDEwICs3OSwxMSBAQCB2b2lkIFNjb3BlZEV2ZW50UXVldWU6
OmRpc3BhdGNoQWxsRXZlbnRzKCkKIHZvaWQgU2NvcGVkRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkgY29uc3QKIHsKICAgICBBU1NFUlQoZXZlbnQtPnRh
cmdldCgpKTsKLSAgICAvLyBQYXNzaW5nIGEgbmFrZWQgRXZlbnQgcG9pbnRlciBpbnN0ZWFkIG9m
IHRoZSBQYXNzUmVmUHRyPEV2ZW50PiBwcmV2ZW50cyB0aGUgUGFzc1JlZlB0ciBjb3B5Ci0gICAg
Ly8gdGhhdCBudWxsaWZpZXMgdGhlIG9yaWdpbmFsIFBhc3NSZWZQdHIuIFRoaXMgcHJldmVudHMg
Y3Jhc2hlcyBvbiBHQ0MtY29tcGlsZWQgY29kZSBzaW5jZQotICAgIC8vIEdDQyBjcmVhdGVzIHRo
ZSBjb3B5IGZpcnN0LCB3aGljaCBsZWF2ZXMgdGhlIGV2ZW50LT50YXJnZXQoKSBjYWxsIHRvIGJl
IG1hZGUgb24gYSBudWxsIHBvaW50ZXIuCi0gICAgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2
ZW50KGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCksIGV2ZW50LmdldCgpKTsKKyAgICAvLyBQYXNz
aW5nIHRoZSBQYXNzUmVmUHRyPEV2ZW50PiBvYmplY3QgaW50byB0aGUgbWV0aG9kIGNhbGwgY3Jl
YXRlcyBhIG5ldyBjb3B5IGFuZCBhbHNvIG51bGxpZmllcworICAgIC8vIHRoZSBvcmlnaW5hbCBv
YmplY3QsIHdoaWNoIGlzIGNhdXNpbmcgY3Jhc2hlcyBpbiBHQ0MtY29tcGlsZWQgY29kZSB0aGF0
IG9ubHkgYWZ0ZXIgdGhhdCBnb2VzIG9uCisgICAgLy8gdG8gcmV0cmlldmUgdGhlIEV2ZW50J3Mg
dGFyZ2V0LCBjYWxsaW5nIEV2ZW50Ojp0YXJnZXQoKSBvbiB0aGUgbm93LW51bGwgUGFzc1JlZlB0
cjxFdmVudD4gb2JqZWN0LgorICAgIE5vZGUqIG5vZGUgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9k
ZSgpOworICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChub2RlLCBldmVudCk7CiB9
CiAKIFNjb3BlZEV2ZW50UXVldWUqIFNjb3BlZEV2ZW50UXVldWU6Omluc3RhbmNlKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>