@@ -391,11 +391,17 @@ } - initWithUTF8StringNoCopy: (char *)UTF8String freeWhenDone: (bool)freeWhenDone { - self = [super init]; + @try { + self = [super init]; + } @catch (id e) { + if (freeWhenDone) + free(UTF8String); + @throw e; + } @try { size_t UTF8StringLength = strlen(UTF8String); _s = &_storage;