From: Jay Freeman (saurik) Date: Fri, 8 Jan 2016 10:21:01 +0000 (-0800) Subject: Use implicit properties on older, broken runtimes. X-Git-Tag: v0.9.590~34 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/554cd08dc5f6226ffd3eac34786b2c63bf17d9ad?ds=inline Use implicit properties on older, broken runtimes. --- diff --git a/ObjectiveC/Library.mm b/ObjectiveC/Library.mm index ac3a963..79573a8 100644 --- a/ObjectiveC/Library.mm +++ b/ObjectiveC/Library.mm @@ -277,6 +277,7 @@ static Class NSArray_; static Class NSBlock_; static Class NSDictionary_; static Class NSNumber_; +static Class NSObject_; static Class NSString_; static Class NSZombie_; static Class Object_; @@ -1702,7 +1703,8 @@ static JSValueRef Messages_complete_callAsFunction(JSContextRef context, JSObjec static bool CYHasImplicitProperties(JSContextRef context, Class _class) { if (!CYCastBool(context, CYGetCachedValue(context, CYJSString("cydget")))) - return false; + if (class_getProperty(NSObject_, "description") != NULL) + return false; // XXX: this is an evil hack to deal with NSProxy; fix elsewhere if (!CYImplements(_class, object_getClass(_class), @selector(cy$hasImplicitProperties))) return true; @@ -2832,6 +2834,7 @@ void CYObjectiveC_Initialize() { /*XXX*/ JSContextRef context(NULL); CYPoolTry { NSBlock_ = objc_getClass("NSBlock"); NSDictionary_ = objc_getClass("NSDictionary"); NSNumber_ = objc_getClass("NSNumber"); + NSObject_ = objc_getClass("NSObject"); NSString_ = objc_getClass("NSString"); Object_ = objc_getClass("Object");