Title: [245080] trunk
Revision
245080
Author
[email protected]
Date
2019-05-08 17:03:00 -0700 (Wed, 08 May 2019)

Log Message

Don't crash when DOMNode.addEventListener:listener:useCapture: is called with a nil listener
https://bugs.webkit.org/show_bug.cgi?id=197712
<rdar://problem/50429770>

Reviewed by Tim Horton.

Source/WebKitLegacy/mac:

* DOM/ObjCEventListener.h:
* DOM/ObjCEventListener.mm:
(WebCore::ObjCEventListener::wrap):

Tools:

* TestWebKitAPI/Tests/WebKitLegacy/mac/DeallocWebViewInEventListener.mm:
(TestWebKitAPI::TEST):

Modified Paths

Diff

Modified: trunk/Source/WebKitLegacy/mac/ChangeLog (245079 => 245080)


--- trunk/Source/WebKitLegacy/mac/ChangeLog	2019-05-08 23:46:03 UTC (rev 245079)
+++ trunk/Source/WebKitLegacy/mac/ChangeLog	2019-05-09 00:03:00 UTC (rev 245080)
@@ -1,3 +1,15 @@
+2019-05-08  Alex Christensen  <[email protected]>
+
+        Don't crash when DOMNode.addEventListener:listener:useCapture: is called with a nil listener
+        https://bugs.webkit.org/show_bug.cgi?id=197712
+        <rdar://problem/50429770>
+
+        Reviewed by Tim Horton.
+
+        * DOM/ObjCEventListener.h:
+        * DOM/ObjCEventListener.mm:
+        (WebCore::ObjCEventListener::wrap):
+
 2019-05-08  Daniel Bates  <[email protected]>
 
         [Legacy WebKit] REGRESSION (r238078): Crash in hardwareKeyboardAvailabilityChangedCallback()

Modified: trunk/Source/WebKitLegacy/mac/DOM/ObjCEventListener.h (245079 => 245080)


--- trunk/Source/WebKitLegacy/mac/DOM/ObjCEventListener.h	2019-05-08 23:46:03 UTC (rev 245079)
+++ trunk/Source/WebKitLegacy/mac/DOM/ObjCEventListener.h	2019-05-09 00:03:00 UTC (rev 245080)
@@ -37,7 +37,7 @@
     class ObjCEventListener : public EventListener {
     public:
         typedef id<DOMEventListener> ObjCListener;
-        static Ref<ObjCEventListener> wrap(ObjCListener);
+        static RefPtr<ObjCEventListener> wrap(ObjCListener);
 
         static const ObjCEventListener* cast(const EventListener* listener)
         {

Modified: trunk/Source/WebKitLegacy/mac/DOM/ObjCEventListener.mm (245079 => 245080)


--- trunk/Source/WebKitLegacy/mac/DOM/ObjCEventListener.mm	2019-05-08 23:46:03 UTC (rev 245079)
+++ trunk/Source/WebKitLegacy/mac/DOM/ObjCEventListener.mm	2019-05-09 00:03:00 UTC (rev 245080)
@@ -47,12 +47,13 @@
     return map->get(listener);
 }
 
-Ref<ObjCEventListener> ObjCEventListener::wrap(ObjCListener listener)
+RefPtr<ObjCEventListener> ObjCEventListener::wrap(ObjCListener listener)
 {
-    RefPtr<ObjCEventListener> wrapper = find(listener);
-    if (wrapper)
-        return wrapper.releaseNonNull();
-    return adoptRef(*new ObjCEventListener(listener));
+    if (!listener)
+        return nullptr;
+    if (RefPtr<ObjCEventListener> wrapper = find(listener))
+        return wrapper;
+    return adoptRef(new ObjCEventListener(listener));
 }
 
 ObjCEventListener::ObjCEventListener(ObjCListener listener)

Modified: trunk/Tools/ChangeLog (245079 => 245080)


--- trunk/Tools/ChangeLog	2019-05-08 23:46:03 UTC (rev 245079)
+++ trunk/Tools/ChangeLog	2019-05-09 00:03:00 UTC (rev 245080)
@@ -1,3 +1,14 @@
+2019-05-08  Alex Christensen  <[email protected]>
+
+        Don't crash when DOMNode.addEventListener:listener:useCapture: is called with a nil listener
+        https://bugs.webkit.org/show_bug.cgi?id=197712
+        <rdar://problem/50429770>
+
+        Reviewed by Tim Horton.
+
+        * TestWebKitAPI/Tests/WebKitLegacy/mac/DeallocWebViewInEventListener.mm:
+        (TestWebKitAPI::TEST):
+
 2019-05-08  Jonathan Bedard  <[email protected]>
 
         Change my status to be a WebKit reviewer.

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitLegacy/mac/DeallocWebViewInEventListener.mm (245079 => 245080)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitLegacy/mac/DeallocWebViewInEventListener.mm	2019-05-08 23:46:03 UTC (rev 245079)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitLegacy/mac/DeallocWebViewInEventListener.mm	2019-05-09 00:03:00 UTC (rev 245080)
@@ -81,6 +81,7 @@
 
         auto listener = adoptNS([[DeallocWebViewInEventListener alloc] init]);
         [[[webView mainFrameDocument] body] addEventListener:@"keypress" listener:listener.get() useCapture:NO];
+        [[[webView mainFrameDocument] body] addEventListener:@"keypress" listener:nullptr useCapture:NO];
         listener = nullptr;
         [webView close];
         [pool drain];
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to