From: Jay Freeman (saurik) Date: Mon, 4 Jan 2016 09:28:45 +0000 (-0800) Subject: Tighten alignment of FFI return values, correctly. X-Git-Tag: v0.9.590~63 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/bf1894da7758957db6a95289cece30281b5c2f5f?ds=inline Tighten alignment of FFI return values, correctly. --- diff --git a/Execute.cpp b/Execute.cpp index 5dbdd58..986b88f 100644 --- a/Execute.cpp +++ b/Execute.cpp @@ -1242,7 +1242,7 @@ JSValueRef CYCallFunction(CYPool &pool, JSContextRef context, size_t setups, voi element.type->PoolFFI(&pool, context, ffi, values[index], arguments[index - setups]); } - uint8_t value[cif->rtype->size]; + uint8_t *value(pool.malloc(std::max(cif->rtype->size, sizeof(ffi_arg)), std::max(cif->rtype->alignment, alignof(ffi_arg)))); void (*call)(CYPool &, JSContextRef, ffi_cif *, void (*)(), void *, void **) = &CYCallFunction; // XXX: this only supports one hook, but it is a bad idea anyway