Index: src/OFObject+KeyValueCoding.m ================================================================== --- src/OFObject+KeyValueCoding.m +++ src/OFObject+KeyValueCoding.m @@ -57,19 +57,21 @@ if ((name = malloc(keyLength + 3)) == NULL) @throw [OFOutOfMemoryException exceptionWithRequestedSize: keyLength + 3]; - memcpy(name, "is", 2); - memcpy(name + 2, [key UTF8String], keyLength); - name[keyLength + 2] = '\0'; - - name[2] = toupper(name[2]); - - selector = sel_registerName(name); - - free(name); + @try { + memcpy(name, "is", 2); + memcpy(name + 2, [key UTF8String], keyLength); + name[keyLength + 2] = '\0'; + + name[2] = toupper(name[2]); + + selector = sel_registerName(name); + } @finally { + free(name); + } typeEncoding = [self typeEncodingForSelector: selector]; if (typeEncoding == NULL || *typeEncoding == '@' || *typeEncoding == '#') @@ -137,19 +139,21 @@ if ((name = malloc(keyLength + 5)) == NULL) @throw [OFOutOfMemoryException exceptionWithRequestedSize: keyLength + 5]; - memcpy(name, "set", 3); - memcpy(name + 3, [key UTF8String], keyLength); - memcpy(name + keyLength + 3, ":", 2); - - name[3] = toupper(name[3]); - - selector = sel_registerName(name); - - free(name); + @try { + memcpy(name, "set", 3); + memcpy(name + 3, [key UTF8String], keyLength); + memcpy(name + keyLength + 3, ":", 2); + + name[3] = toupper(name[3]); + + selector = sel_registerName(name); + } @finally { + free(name); + } typeEncoding = [self typeEncodingForSelector: selector]; if (typeEncoding == NULL || nextType(&typeEncoding) != 'v' || nextType(&typeEncoding) != '@' || nextType(&typeEncoding) != ':') {