<rdar://problem/15114974> Assertion failure under -[JSObjCClassInfo allocateConstruct...
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Sep 2013 22:52:39 +0000 (22:52 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Sep 2013 22:52:39 +0000 (22:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=122124

Reviewed by Darin Adler.

* API/JSWrapperMap.mm: Defined an empty class that conforms to the JSExport protocol, to
ensure that the protocol is always registered with the runtime by the time
getJSExportProtocol() is called.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@156684 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/API/JSWrapperMap.mm
Source/JavaScriptCore/ChangeLog

index 6309036..9ffaf56 100644 (file)
@@ -506,6 +506,12 @@ id tryUnwrapObjcObject(JSGlobalContextRef context, JSValueRef value)
     return nil;
 }
 
+// This class ensures that the JSExport protocol is registered with the runtime.
+NS_ROOT_CLASS @interface JSExport <JSExport>
+@end
+@implementation JSExport
+@end
+
 Protocol *getJSExportProtocol()
 {
     static Protocol *protocol = objc_getProtocol("JSExport");
index 60a77f7..7afc86a 100644 (file)
@@ -1,3 +1,14 @@
+2013-09-30  Dan Bernstein  <mitz@apple.com>
+
+        <rdar://problem/15114974> Assertion failure under -[JSObjCClassInfo allocateConstructorAndPrototypeWithSuperClassInfo:] if no classes conform to JSExport
+        https://bugs.webkit.org/show_bug.cgi?id=122124
+
+        Reviewed by Darin Adler.
+
+        * API/JSWrapperMap.mm: Defined an empty class that conforms to the JSExport protocol, to
+        ensure that the protocol is always registered with the runtime by the time
+        getJSExportProtocol() is called.
+
 2013-09-30  Benjamin Poulain  <benjamin@webkit.org>
 
         Remove the code guarded by STYLE_SCOPED