From 7fda0bae4e053e7d462d1580eb7580a8427ed0b7 Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Tue, 3 Jun 2014 15:33:00 -0700 Subject: [PATCH] Don't crash if ivar_getTypeEncoding returns NULL. --- ObjectiveC/Library.mm | 3 +++ 1 file changed, 3 insertions(+) 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); -- 2.47.2