[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