@@ -834,29 +834,37 @@ } - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String freeWhenDone: (bool)freeWhenDone { + id ret; + @try { - return [self initWithUTF8String: UTF8String]; + ret = [self initWithUTF8String: UTF8String]; } @finally { if (freeWhenDone) free(UTF8String); } + + return ret; } - (instancetype)initWithUTF8StringNoCopy: (char *)UTF8String length: (size_t)UTF8StringLength freeWhenDone: (bool)freeWhenDone { + id ret; + @try { - return [self initWithUTF8String: UTF8String - length: UTF8StringLength]; + ret = [self initWithUTF8String: UTF8String + length: UTF8StringLength]; } @finally { if (freeWhenDone) free(UTF8String); } + + return ret; } - (instancetype)initWithCString: (const char *)cString encoding: (of_string_encoding_t)encoding {