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