From: Jay Freeman (saurik) Date: Tue, 3 Jun 2014 22:33:00 +0000 (-0700) Subject: Don't crash if ivar_getTypeEncoding returns NULL. X-Git-Tag: v0.9.502~20 X-Git-Url: https://git.saurik.com/cycript.git/commitdiff_plain/7fda0bae4e053e7d462d1580eb7580a8427ed0b7?ds=inline Don't crash if ivar_getTypeEncoding returns NULL. --- diff --git a/ObjectiveC/Library.mm b/ObjectiveC/Library.mm index a685816..53d0611 100644 --- a/ObjectiveC/Library.mm +++ b/ObjectiveC/Library.mm @@ -2048,6 +2048,7 @@ static void CYBitField(unsigned &length, unsigned &shift, id self, Ivar ivar, co break; else if (ivar_getOffset(ivars[i]) == offset) { const char *encoding(ivar_getTypeEncoding(ivars[i])); + _assert(encoding != NULL); _assert(encoding[0] == 'b'); shift += CYCastDouble(encoding + 1); } @@ -2071,6 +2072,7 @@ static JSValueRef Internal_getProperty(JSContextRef context, JSObjectRef object, void *data(reinterpret_cast(self) + offset); const char *encoding(ivar_getTypeEncoding(ivar)); + _assert(encoding != NULL); if (encoding[0] == 'b') { unsigned length, shift; CYBitField(length, shift, self, ivar, encoding, offset); @@ -2099,6 +2101,7 @@ static bool Internal_setProperty(JSContextRef context, JSObjectRef object, JSStr void *data(reinterpret_cast(self) + offset); const char *encoding(ivar_getTypeEncoding(ivar)); + _assert(encoding != NULL); if (encoding[0] == 'b') { unsigned length, shift; CYBitField(length, shift, self, ivar, encoding, offset);