From: Jay Freeman (saurik) Date: Sat, 25 Jan 2014 23:19:48 +0000 (-0800) Subject: Support choose()ing "LARGE" Objective-C classes. X-Git-Tag: v0.9.501~14 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/6446a550facb7e307578ae487b8ff39d24071722 Support choose()ing "LARGE" Objective-C classes. --- diff --git a/ObjectiveC/Library.mm b/ObjectiveC/Library.mm index 46c7f98..936a5a1 100644 --- a/ObjectiveC/Library.mm +++ b/ObjectiveC/Library.mm @@ -2315,8 +2315,9 @@ static void choose_(task_t task, void *baton, unsigned type, vm_range_t *ranges, if (result == choice->query_.end()) continue; - // XXX: if (size < class_getInstanceSize(*result)) - if ((class_getInstanceSize(*result) + 15) / 16 * 16 != size) + size_t needed(class_getInstanceSize(*result)); + // XXX: if (size < needed) + if (needed <= 496 && (needed + 15) / 16 * 16 != size || needed > 496 && (needed + 511) / 512 * 512 != size) continue; CYArrayPush(context, choice->results_, CYCastJSValue(context, reinterpret_cast(data))); }