[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53456] trunk/blender/intern/locale/ boost_locale_wrapper.cpp: Add try/catch around i18n locale setter code, just in case...

Bastien Montagne montagne29 at wanadoo.fr
Mon Dec 31 13:12:53 CET 2012


Revision: 53456
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53456
Author:   mont29
Date:     2012-12-31 12:12:50 +0000 (Mon, 31 Dec 2012)
Log Message:
-----------
Add try/catch around i18n locale setter code, just in case...

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

Modified: trunk/blender/intern/locale/boost_locale_wrapper.cpp
===================================================================
--- trunk/blender/intern/locale/boost_locale_wrapper.cpp	2012-12-31 07:06:51 UTC (rev 53455)
+++ trunk/blender/intern/locale/boost_locale_wrapper.cpp	2012-12-31 12:12:50 UTC (rev 53456)
@@ -55,44 +55,49 @@
 	// Specify location of dictionaries.
 	gen.add_messages_path(messages_path);
 	gen.add_messages_domain(default_domain);
-	//gen.set_default_messages_domain(default_domain);	
+	//gen.set_default_messages_domain(default_domain);
 
-	if (locale && locale[0]) {
-		std::locale::global(gen(locale));
-	}
-	else {
-#if defined (__APPLE__)
-		// workaround to get osx system locale from user defaults
-		FILE* fp;
-		std::string locale_osx = "";
-		char result[16];
-		int result_len = 0;
+	try {
+		if (locale && locale[0]) {
+			std::locale::global(gen(locale));
+		}
+		else {
+#ifdef __APPLE__
+			// workaround to get osx system locale from user defaults
+			FILE *fp;
+			std::string locale_osx = "";
+			char result[16];
+			int result_len = 0;
 
-		fp = popen("defaults read .GlobalPreferences AppleLocale", "r");
+			fp = popen("defaults read .GlobalPreferences AppleLocale", "r");
 
-		if(fp) {
-			result_len = fread(result, 1, sizeof(result) - 1, fp);
+			if (fp) {
+				result_len = fread(result, 1, sizeof(result) - 1, fp);
 
-			if(result_len > 0) {
-				result[result_len-1] = '\0'; // \0 terminate and remove \n
-				locale_osx = std::string(result) + std::string(".UTF-8");
+				if (result_len > 0) {
+					result[result_len - 1] = '\0'; // \0 terminate and remove \n
+					locale_osx = std::string(result) + std::string(".UTF-8");
+				}
+
+				pclose(fp);
 			}
 
-			pclose(fp);
-		}
+			if (locale_osx == "")
+				fprintf(stderr, "Locale set: failed to read AppleLocale read from defaults\n");
 
-		if(locale_osx == "")
-			fprintf(stderr, "Locale set: failed to read AppleLocale read from defaults\n");
-
-		std::locale::global(gen(locale_osx.c_str()));
+			std::locale::global(gen(locale_osx.c_str()));
 #else
-		std::locale::global(gen(""));
+			std::locale::global(gen(""));
 #endif
+		}
+		// Note: boost always uses "C" LC_NUMERIC by default!
 	}
-	// Note: boost always uses "C" LC_NUMERIC by default!
+	catch(std::exception const &e) {
+		std::cout << "bl_locale_set(" << locale << "): " << e.what() << " \n";
+	}
 }
 
-const char* bl_locale_pgettext(const char *msgctxt, const char *msgid)
+const char *bl_locale_pgettext(const char *msgctxt, const char *msgid)
 {
 	// Note: We cannot use short stuff like boost::locale::gettext, because those return
 	//       std::basic_string objects, which c_ptr()-returned char* is no more valid
@@ -107,7 +112,7 @@
 		return msgid;
 	}
 	catch(std::exception const &e) {
-//		std::cout << "boost_locale_pgettext: " << e.what() << " \n";
+//		std::cout << "bl_locale_pgettext(" << msgctxt << ", " << msgid << "): " << e.what() << " \n";
 		return msgid;
 	}
 }




More information about the Bf-blender-cvs mailing list