msvcrt: Add helper function that returns current locale.
authorPiotr Caban <piotr@codeweavers.com>
Thu, 15 Apr 2010 12:25:34 +0000 (14:25 +0200)
committerAlexandre Julliard <julliard@winehq.org>
Thu, 15 Apr 2010 14:51:45 +0000 (16:51 +0200)
dlls/msvcrt/locale.c
dlls/msvcrt/main.c
dlls/msvcrt/msvcrt.h

index c30b90751a54b0b6733252f9e220d25524e2f06c..45547ae442b446c79511070710966a0ee243188d 100644 (file)
@@ -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.@)
index a8b77e1c5d5f66e59be13ccaef8661b37ee0552e..e2184b37792fb8c0cbe4497d363cc87bd7214154 100644 (file)
@@ -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);
 }
index 34d1c9efbcaf505ee39322bda0bde48cd8c61b26..9b99cd7e5de13c153f8ad94d4b2f9ce1f7e9b40a 100644 (file)
@@ -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