Piotr Caban : msvcrt: Add helper function that returns current locale.

Alexandre Julliard julliard at winehq.org
Thu Apr 15 11:37:38 CDT 2010


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Apr 15 14:25:34 2010 +0200

msvcrt: Add helper function that returns current locale.

---

 dlls/msvcrt/locale.c |   10 ++++++++++
 dlls/msvcrt/main.c   |    1 +
 dlls/msvcrt/msvcrt.h |    2 ++
 3 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index c30b907..45547ae 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -317,6 +317,16 @@ static inline void swap_pointers(void **p1, void **p2) {
     *p2 = hlp;
 }
 
+/* INTERNAL: returns _locale_t struct for current locale */
+MSVCRT__locale_t get_locale(void) {
+    thread_data_t *data = msvcrt_get_thread_data();
+
+    if(!data || !data->locale)
+        return MSVCRT_locale;
+
+    return data->locale;
+}
+
 
 /*********************************************************************
  *		wsetlocale (MSVCRT.@)
diff --git a/dlls/msvcrt/main.c b/dlls/msvcrt/main.c
index a8b77e1..e2184b3 100644
--- a/dlls/msvcrt/main.c
+++ b/dlls/msvcrt/main.c
@@ -69,6 +69,7 @@ static inline void msvcrt_free_tls_mem(void)
     HeapFree(GetProcessHeap(),0,tls->asctime_buffer);
     HeapFree(GetProcessHeap(),0,tls->wasctime_buffer);
     HeapFree(GetProcessHeap(),0,tls->strerror_buffer);
+    _free_locale(tls->locale);
   }
   HeapFree(GetProcessHeap(), 0, tls);
 }
diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index 34d1c9e..9b99cd7 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -115,6 +115,7 @@ struct __thread_data {
     MSVCRT_unexpected_function      unexpected_handler;
     MSVCRT__se_translator_function  se_translator;
     EXCEPTION_RECORD               *exc_record;
+    struct MSVCRT_localeinfo_struct *locale;
 };
 
 typedef struct __thread_data thread_data_t;
@@ -791,6 +792,7 @@ typedef struct MSVCRT_localeinfo_struct
 } MSVCRT__locale_tstruct, *MSVCRT__locale_t;
 
 extern MSVCRT__locale_t MSVCRT_locale;
+MSVCRT__locale_t get_locale(void);
 void __cdecl _free_locale(MSVCRT__locale_t);
 
 #ifndef __WINE_MSVCRT_TEST




More information about the wine-cvs mailing list