Module: wine Branch: master Commit: a9dfe7aba20ab30743c838e378e2bfe02bb99a9d URL: https://source.winehq.org/git/wine.git/?a=commit;h=a9dfe7aba20ab30743c838e37...
Author: Piotr Caban piotr@codeweavers.com Date: Wed Nov 25 20:24:37 2020 +0100
msvcrt: Reimplement _configthreadlocale function.
Signed-off-by: Piotr Caban piotr@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcrt/locale.c | 37 +++++++------------------------------ 1 file changed, 7 insertions(+), 30 deletions(-)
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 3925678a9fd..2502e556ee2 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -2128,40 +2128,17 @@ int CDECL _configthreadlocale(int type) thread_data_t *data = msvcrt_get_thread_data(); int ret;
- if(!data) - return -1; - ret = (data->locale_flags & LOCALE_THREAD ? MSVCRT__ENABLE_PER_THREAD_LOCALE : MSVCRT__DISABLE_PER_THREAD_LOCALE); - if(ret == type) - return ret; - - if(data->locale_flags & LOCALE_FREE) - { - free_locinfo(data->locinfo); - free_mbcinfo(data->mbcinfo); - data->locale_flags &= ~LOCALE_FREE; - } - - if(type == MSVCRT__ENABLE_PER_THREAD_LOCALE) { - MSVCRT__locale_tstruct locale;
- get_current_locale_noalloc(&locale); - data->locinfo = locale.locinfo; - data->mbcinfo = locale.mbcinfo; - data->locale_flags = LOCALE_FREE | LOCALE_THREAD; - return ret; - } + if(type == MSVCRT__ENABLE_PER_THREAD_LOCALE) + data->locale_flags |= LOCALE_THREAD; + else if(type == MSVCRT__DISABLE_PER_THREAD_LOCALE) + data->locale_flags &= ~LOCALE_THREAD; + else if(type) + ret = -1;
- if(type == MSVCRT__DISABLE_PER_THREAD_LOCALE) { - data->locale_flags = 0; - return ret; - } - - if(!type) - return ret; - - return -1; + return ret; } #endif