From 93254327a1b242e12b8563ab1502e757a05f0891 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Wed, 19 Dec 2007 17:05:57 +0000 Subject: [PATCH] fixing strange bug under OS X (null strings from within CoreFoundation) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50833 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/wxcrt.cpp | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/common/wxcrt.cpp b/src/common/wxcrt.cpp index c50a880767..9ae281d008 100644 --- a/src/common/wxcrt.cpp +++ b/src/common/wxcrt.cpp @@ -167,26 +167,17 @@ char* wxSetlocale(int category, const char *locale) char *rv = NULL ; if ( locale != NULL && locale[0] == 0 ) { - locale_t lt = newlocale(LC_ALL_MASK, "", NULL); - if ( lt ) - { - rv = (char*) querylocale( LC_ALL_MASK, lt ); - freelocale(lt); - } - if ( rv == NULL || rv[0] == 0 || strcmp( rv , "C" ) == 0 || strcmp( rv, "POSIX" ) == 0 ) - { - // we have to emulate the behaviour under OS X - wxCFRef userLocaleRef(CFLocaleCopyCurrent()); - wxCFStringRef str(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleLanguageCode))); - wxString langFull = str.AsString()+"_"; - str.reset(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode))); - langFull += str.AsString(); - rv = setlocale(category, langFull.c_str()); - } - else - { - rv = setlocale(category, rv); - } + // the attempt to use newlocale(LC_ALL_MASK, "", NULL); + // here in order to deduce the language along the environment vars rules + // lead to strange crashes later... + + // we have to emulate the behaviour under OS X + wxCFRef userLocaleRef(CFLocaleCopyCurrent()); + wxCFStringRef str(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleLanguageCode))); + wxString langFull = str.AsString()+"_"; + str.reset(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode))); + langFull += str.AsString(); + rv = setlocale(category, langFull.c_str()); } else rv = setlocale(category, locale); -- 2.50.0