]> git.saurik.com Git - cycript.git/commitdiff
Support choose()ing "LARGE" Objective-C classes.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 25 Jan 2014 23:19:48 +0000 (15:19 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 25 Jan 2014 23:51:25 +0000 (15:51 -0800)
ObjectiveC/Library.mm

index 46c7f98970fb3b1a7e056feeb22f2232e038d4e9..936a5a13e00dd9c5ab3d0aa0c503e5f718de620a 100644 (file)
@@ -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<id>(data)));
     }