]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wxcrt.cpp
make wxDateTime::ParseXXX() functions char*-friendly
[wxWidgets.git] / src / common / wxcrt.cpp
index d7de48de96a54a6624ddc10a4dc9c824e852c952..9ae281d008da750a34f8246e6b17f3b9fbea3b05 100644 (file)
@@ -21,6 +21,7 @@
 #endif
 
 #include "wx/crt.h"
+#include "wx/strconv.h" // wxMBConv::cWC2MB()
 
 #define _ISOC9X_SOURCE 1 // to get vsscanf()
 #define _BSD_SOURCE    1 // to still get strdup()
 #include <stdlib.h>
 #include <string.h>
 
+#ifndef __WXPALMOS5__
 #ifndef __WXWINCE__
     #include <time.h>
     #include <locale.h>
 #else
     #include "wx/msw/wince/time.h"
 #endif
+#endif // !__WXPALMOS5__
 
 #ifndef WX_PRECOMP
     #include "wx/string.h"
@@ -65,6 +68,7 @@ using namespace std ;
        #include "wx/mac/corefoundation/cfref.h"
        #include <CoreFoundation/CFLocale.h>
        #include "wx/mac/corefoundation/cfstring.h"
+    #include <xlocale.h>
 #endif
 
 #if wxUSE_WCHAR_T
@@ -163,11 +167,15 @@ char* wxSetlocale(int category, const char *locale)
     char *rv = NULL ;
     if ( locale != NULL && locale[0] == 0 )
     {
+        // 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<CFLocaleRef> userLocaleRef(CFLocaleCopyCurrent());
-        wxMacCFStringHolder str(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleLanguageCode)));
+        wxCFStringRef str(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleLanguageCode)));
         wxString langFull = str.AsString()+"_";
-        str.Assign(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode)));
+        str.reset(wxCFRetain((CFStringRef)CFLocaleGetValue(userLocaleRef, kCFLocaleCountryCode)));
         langFull += str.AsString();
         rv = setlocale(category, langFull.c_str());
     }