X-Git-Url: https://git.saurik.com/cycript.git/blobdiff_plain/20ded97a3fd17e970ee44a9a2ae273098e27c3cb..fe123f47092fe716bf5111ca57b2670932c10d6d:/ObjectiveC/Library.mm diff --git a/ObjectiveC/Library.mm b/ObjectiveC/Library.mm index e8777b4..9d5289f 100644 --- a/ObjectiveC/Library.mm +++ b/ObjectiveC/Library.mm @@ -1343,6 +1343,8 @@ static void CYObjectiveC_CallFunction(JSContextRef context, ffi_cif *cif, void ( static bool CYObjectiveC_PoolFFI(apr_pool_t *pool, JSContextRef context, sig::Type *type, ffi_type *ffi, void *data, JSValueRef value) { CYSadTry { switch (type->primitive) { + // XXX: do something epic about blocks + case sig::block_P: case sig::object_P: case sig::typename_P: *reinterpret_cast(data) = CYCastNSObject(pool, context, value); @@ -1361,6 +1363,8 @@ static bool CYObjectiveC_PoolFFI(apr_pool_t *pool, JSContextRef context, sig::Ty static JSValueRef CYObjectiveC_FromFFI(JSContextRef context, sig::Type *type, ffi_type *ffi, void *data, bool initialize, JSObjectRef owner) { CYPoolTry { switch (type->primitive) { + // XXX: do something epic about blocks + case sig::block_P: case sig::object_P: if (NSObject *object = *reinterpret_cast(data)) { JSValueRef value(CYCastJSValue(context, object)); @@ -2107,7 +2111,7 @@ static JSObjectRef Instance_new(JSContextRef context, JSObjectRef object, size_t if (count > 1) throw CYJSError(context, "incorrect number of arguments to Instance constructor"); id self(count == 0 ? nil : CYCastPointer(context, arguments[0])); - return Instance::Make(context, self); + return CYMakeInstance(context, self, false); } CYCatch } static JSValueRef CYValue_getProperty_value(JSContextRef context, JSObjectRef object, JSStringRef property, JSValueRef *exception) { @@ -2455,5 +2459,7 @@ static CYHooks CYObjectiveCHooks = { struct CYObjectiveC { CYObjectiveC() { hooks_ = &CYObjectiveCHooks; + // XXX: evil magic juju to make this actually take effect on a Mac when compiled with autoconf/libtool doom! + _assert(hooks_ != NULL); } } CYObjectiveC;