]> git.saurik.com Git - wxWidgets.git/commitdiff
Make sure wchar_t CRT functions work on OS X.
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 25 Aug 2012 11:14:44 +0000 (11:14 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 25 Aug 2012 11:14:44 +0000 (11:14 +0000)
In OS X and iOS, wchar_t CRT functions convert to char* and fail under
some locales. The safest fix is to set LC_CTYPE to UTF-8 to ensure that
they can handle any input.

Note that this must be done for any app, Cocoa or console, whether or
not it uses wxLocale.

See http://stackoverflow.com/questions/11713745/why-does-the-printf-family-of-functions-care-about-locale

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/common/init.cpp

index 8b11d75ce1413551306f26b45c6af2289fedd08a..08a51de7553d086d0b88a7d877905ce6b62dca5f 100644 (file)
@@ -218,6 +218,18 @@ static void FreeConvertedArgs()
 // initialization which is always done (not customizable) before wxApp creation
 static bool DoCommonPreInit()
 {
+#if wxUSE_UNICODE && defined(__WXOSX__)
+    // In OS X and iOS, wchar_t CRT functions convert to char* and fail under
+    // some locales. The safest fix is to set LC_CTYPE to UTF-8 to ensure that
+    // they can handle any input.
+    //
+    // Note that this must be done for any app, Cocoa or console, whether or
+    // not it uses wxLocale.
+    //
+    // See http://stackoverflow.com/questions/11713745/why-does-the-printf-family-of-functions-care-about-locale
+    setlocale(LC_CTYPE, "UTF-8");
+#endif // wxUSE_UNICODE && defined(__WXOSX__)
+
 #if wxUSE_LOG
     // Reset logging in case we were cleaned up and are being reinitialized.
     wxLog::DoCreateOnDemand();