Piotr Caban : msvcrt: Use _create_locale instead of setlocale during initialization.

Alexandre Julliard julliard at winehq.org
Wed May 25 11:28:12 CDT 2011


Module: wine
Branch: master
Commit: 11bfced55d7a480248b01d9a8cfed73f74e50280
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=11bfced55d7a480248b01d9a8cfed73f74e50280

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue May 24 17:22:23 2011 +0200

msvcrt: Use _create_locale instead of setlocale during initialization.

---

 dlls/msvcrt/locale.c |   74 +++++++++++++++++++++++++-------------------------
 dlls/msvcrt/main.c   |    2 +-
 dlls/msvcrt/msvcrt.h |    2 +-
 3 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index 7da61d8..002a38b 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -1079,43 +1079,6 @@ MSVCRT__locale_t MSVCRT__create_locale(int category, const char *locale)
     return loc;
 }
 
-/* _configthreadlocale - not exported in native msvcrt */
-int CDECL _configthreadlocale(int type)
-{
-    thread_data_t *data = msvcrt_get_thread_data();
-    int ret;
-
-    if(!data)
-        return -1;
-
-    ret = (data->locale ? MSVCRT__ENABLE_PER_THREAD_LOCALE : MSVCRT__DISABLE_PER_THREAD_LOCALE);
-
-    if(type == MSVCRT__ENABLE_PER_THREAD_LOCALE) {
-        if(!data->locale) {
-            /* Copy current global locale */
-            data->locale = MSVCRT__create_locale(MSVCRT_LC_ALL, MSVCRT_setlocale(MSVCRT_LC_ALL, NULL));
-            if(!data->locale)
-                return -1;
-        }
-
-        return ret;
-    }
-
-    if(type == MSVCRT__DISABLE_PER_THREAD_LOCALE) {
-        if(data->locale) {
-            MSVCRT__free_locale(data->locale);
-            data->locale = NULL;
-        }
-
-        return ret;
-    }
-
-    if(!type)
-        return ret;
-
-    return -1;
-}
-
 /*********************************************************************
  *             setlocale (MSVCRT.@)
  */
@@ -1262,3 +1225,40 @@ char* CDECL MSVCRT_setlocale(int category, const char* locale)
 
     return cur->locinfo->lc_category[category].locale;
 }
+
+/* _configthreadlocale - not exported in native msvcrt */
+int CDECL _configthreadlocale(int type)
+{
+    thread_data_t *data = msvcrt_get_thread_data();
+    int ret;
+
+    if(!data)
+        return -1;
+
+    ret = (data->locale ? MSVCRT__ENABLE_PER_THREAD_LOCALE : MSVCRT__DISABLE_PER_THREAD_LOCALE);
+
+    if(type == MSVCRT__ENABLE_PER_THREAD_LOCALE) {
+        if(!data->locale) {
+            /* Copy current global locale */
+            data->locale = MSVCRT__create_locale(MSVCRT_LC_ALL, MSVCRT_setlocale(MSVCRT_LC_ALL, NULL));
+            if(!data->locale)
+                return -1;
+        }
+
+        return ret;
+    }
+
+    if(type == MSVCRT__DISABLE_PER_THREAD_LOCALE) {
+        if(data->locale) {
+            MSVCRT__free_locale(data->locale);
+            data->locale = NULL;
+        }
+
+        return ret;
+    }
+
+    if(!type)
+        return ret;
+
+    return -1;
+}
diff --git a/dlls/msvcrt/main.c b/dlls/msvcrt/main.c
index f1ef67b..54a0689 100644
--- a/dlls/msvcrt/main.c
+++ b/dlls/msvcrt/main.c
@@ -93,7 +93,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
     if (!msvcrt_init_tls())
       return FALSE;
     msvcrt_init_mt_locks();
-    if(!MSVCRT_setlocale(0, "C")) {
+    if(!(MSVCRT_locale = MSVCRT__create_locale(0, "C"))) {
         msvcrt_free_mt_locks();
         msvcrt_free_tls_mem();
         return FALSE;
diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index 58fd0b7..49d4768 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -805,7 +805,6 @@ void __cdecl     MSVCRT_abort(void);
 MSVCRT_ulong* __cdecl MSVCRT___doserrno(void);
 int* __cdecl     MSVCRT__errno(void);
 char* __cdecl    MSVCRT_getenv(const char*);
-char* __cdecl    MSVCRT_setlocale(int,const char*);
 int __cdecl      MSVCRT_fclose(MSVCRT_FILE*);
 void __cdecl     MSVCRT_terminate(void);
 MSVCRT_FILE* __cdecl MSVCRT__iob_func(void);
@@ -877,6 +876,7 @@ typedef struct MSVCRT_localeinfo_struct
 #define MSVCRT__DISABLE_PER_THREAD_LOCALE 2
 
 extern MSVCRT__locale_t MSVCRT_locale;
+MSVCRT__locale_t MSVCRT__create_locale(int, const char*);
 MSVCRT__locale_t get_locale(void);
 void __cdecl MSVCRT__free_locale(MSVCRT__locale_t);
 




More information about the wine-cvs mailing list