diff --git a/platform/darwin/string_nsstring.mm b/platform/darwin/string_nsstring.mm index 9b1dc745c..ef6b96062 100644 --- a/platform/darwin/string_nsstring.mm +++ b/platform/darwin/string_nsstring.mm @@ -7,14 +7,20 @@ namespace platform { std::string uppercase(const std::string &string) { NSString *nsstring = [[NSString alloc] initWithBytesNoCopy:const_cast(string.data()) length:string.size() encoding:NSUTF8StringEncoding freeWhenDone:NO]; - nsstring = [nsstring uppercaseString]; - return { [nsstring cStringUsingEncoding:NSUTF8StringEncoding], [nsstring lengthOfBytesUsingEncoding:NSUTF8StringEncoding] }; + NSString *nsstring2 = [nsstring uppercaseString]; + [nsstring release]; + const std::string result { [nsstring2 cStringUsingEncoding:NSUTF8StringEncoding], [nsstring2 lengthOfBytesUsingEncoding:NSUTF8StringEncoding] }; + [nsstring2 release]; + return result; } std::string lowercase(const std::string &string) { NSString *nsstring = [[NSString alloc] initWithBytesNoCopy:const_cast(string.data()) length:string.size() encoding:NSUTF8StringEncoding freeWhenDone:NO]; - nsstring = [nsstring lowercaseString]; - return { [nsstring cStringUsingEncoding:NSUTF8StringEncoding], [nsstring lengthOfBytesUsingEncoding:NSUTF8StringEncoding] }; + NSString *nsstring2 = [nsstring lowercaseString]; + [nsstring release]; + const std::string result { [nsstring2 cStringUsingEncoding:NSUTF8StringEncoding], [nsstring2 lengthOfBytesUsingEncoding:NSUTF8StringEncoding] }; + [nsstring2 release]; + return result; } }