From: Jay Freeman (saurik) <saurik@saurik.com>
Date: Tue, 15 Sep 2015 04:11:42 +0000 (-0700)
Subject: On iOS 9, JSObjectGetPrototype changes JSValueRef.
X-Git-Tag: v0.9.503~7
X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/79492f212da2fcaa4ce44d00fc08530e1630d05b

On iOS 9, JSObjectGetPrototype changes JSValueRef.
---

diff --git a/Execute.cpp b/Execute.cpp
index 11fada2..f7ee724 100644
--- a/Execute.cpp
+++ b/Execute.cpp
@@ -86,7 +86,7 @@ void CYSetProperty(JSContextRef context, JSObjectRef object, JSStringRef name, J
 
 void CYSetPrototype(JSContextRef context, JSObjectRef object, JSValueRef value) {
     JSObjectSetPrototype(context, object, value);
-    _assert(JSObjectGetPrototype(context, object) == value);
+    _assert(CYIsEqual(context, JSObjectGetPrototype(context, object), value));
 }
 /* }}} */
 /* JavaScript Strings {{{ */
@@ -322,6 +322,10 @@ bool CYIsCallable(JSContextRef context, JSValueRef value) {
     return value != NULL && JSValueIsObject(context, value) && JSObjectIsFunction(context, (JSObjectRef) value);
 }
 
+bool CYIsEqual(JSContextRef context, JSValueRef lhs, JSValueRef rhs) {
+    return _jsccall(JSValueIsEqual, context, lhs, rhs);
+}
+
 size_t CYArrayLength(JSContextRef context, JSObjectRef array) {
     return CYCastDouble(context, CYGetProperty(context, array, length_s));
 }
diff --git a/JavaScript.hpp b/JavaScript.hpp
index 9408c78..e80be76 100644
--- a/JavaScript.hpp
+++ b/JavaScript.hpp
@@ -66,6 +66,8 @@ void CYSetArgs(int argc, const char *argv[]);
 bool CYCastBool(JSContextRef context, JSValueRef value);
 double CYCastDouble(JSContextRef context, JSValueRef value);
 
+bool CYIsEqual(JSContextRef context, JSValueRef lhs, JSValueRef rhs);
+
 CYUTF8String CYPoolUTF8String(CYPool &pool, JSContextRef context, JSStringRef value);
 const char *CYPoolCString(CYPool &pool, JSContextRef context, JSStringRef value);