From: Jay Freeman (saurik) Date: Sun, 26 Jan 2014 16:36:38 +0000 (-0800) Subject: Do not use isKindOfClass: to check for NSBlock. X-Git-Tag: v0.9.501~12 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/744a0b8af3e29256cc45c758d5c38c5b63878391?ds=inline Do not use isKindOfClass: to check for NSBlock. --- diff --git a/ObjectiveC/Library.mm b/ObjectiveC/Library.mm index 33ccaf0..43e592b 100644 --- a/ObjectiveC/Library.mm +++ b/ObjectiveC/Library.mm @@ -394,8 +394,15 @@ JSObjectRef Super::Make(JSContextRef context, id object, Class _class) { return value; } } +bool CYIsKindOfClass(id object, Class _class) { + for (Class isa(object_getClass(object)); isa != NULL; isa = class_getSuperclass(isa)) + if (isa == _class) + return true; + return false; +} + JSObjectRef Instance::Make(JSContextRef context, id object, Flags flags) { - JSObjectRef value(JSObjectMake(context, [object isKindOfClass:NSBlock_] ? FunctionInstance_ : Instance_, new Instance(object, flags))); + JSObjectRef value(JSObjectMake(context, CYIsKindOfClass(object, NSBlock_) ? FunctionInstance_ : Instance_, new Instance(object, flags))); JSObjectSetPrototype(context, value, CYGetClassPrototype(context, object_getClass(object))); return value; }