From 5602ba2f07a893604ea0506b3d580d4f2e2999ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Fri, 16 Jan 2015 15:34:08 +0100 Subject: [PATCH] do not leak string handles --- platform/darwin/string_nsstring.mm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) 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; } }