[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57821] trunk/blender/intern: Fix #35890: memory leak in OS X ghost locale detection.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Jun 27 15:24:56 CEST 2013


Revision: 57821
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57821
Author:   blendix
Date:     2013-06-27 13:24:55 +0000 (Thu, 27 Jun 2013)
Log Message:
-----------
Fix #35890: memory leak in OS X ghost locale detection.

Modified Paths:
--------------
    trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
    trunk/blender/intern/locale/boost_locale_wrapper.cpp

Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2013-06-27 11:30:53 UTC (rev 57820)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm	2013-06-27 13:24:55 UTC (rev 57821)
@@ -549,7 +549,7 @@
 
 #pragma mark initialization/finalization
 
-const char *user_locale; // Global current user locale
+char GHOST_user_locale[128]; // Global current user locale
 
 GHOST_SystemCocoa::GHOST_SystemCocoa()
 {
@@ -590,11 +590,13 @@
 	m_ignoreWindowSizedMessages = false;
 	
 	//Get current locale
+	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
 	CFLocaleRef myCFLocale = CFLocaleCopyCurrent();
 	NSLocale * myNSLocale = (NSLocale *) myCFLocale;
 	[myNSLocale autorelease];
 	NSString *nsIdentifier = [myNSLocale localeIdentifier];
-	user_locale = [nsIdentifier UTF8String];	
+	strncpy(GHOST_user_locale, [nsIdentifier UTF8String], sizeof(GHOST_user_locale) - 1);
+	[pool drain];
 }
 
 GHOST_SystemCocoa::~GHOST_SystemCocoa()

Modified: trunk/blender/intern/locale/boost_locale_wrapper.cpp
===================================================================
--- trunk/blender/intern/locale/boost_locale_wrapper.cpp	2013-06-27 11:30:53 UTC (rev 57820)
+++ trunk/blender/intern/locale/boost_locale_wrapper.cpp	2013-06-27 13:24:55 UTC (rev 57821)
@@ -65,8 +65,8 @@
 		}
 		else {
 #ifdef __APPLE__
-			extern const char *user_locale; // pulled from Ghost_SystemCocoa
-			std::string locale_osx = user_locale + std::string(".UTF-8");
+			extern char GHOST_user_locale[128]; // pulled from Ghost_SystemCocoa
+			std::string locale_osx = GHOST_user_locale + std::string(".UTF-8");
 			_locale = gen(locale_osx.c_str());
 #else
 			_locale = gen("");




More information about the Bf-blender-cvs mailing list