Module: wine Branch: master Commit: c0ff1a221be311534db72e9ff316287eb6b31351 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c0ff1a221be311534db72e9ff...
Author: Alexandre Julliard julliard@winehq.org Date: Fri Apr 1 15:24:59 2022 +0200
kernelbase: Set system/user locales by name if they have no LCID.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/locale.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/dlls/kernelbase/locale.c b/dlls/kernelbase/locale.c index 997c7b6f4bc..4f0957ceff6 100644 --- a/dlls/kernelbase/locale.c +++ b/dlls/kernelbase/locale.c @@ -1547,12 +1547,32 @@ void init_locale( HMODULE module ) SIZE_T size; HKEY hkey;
+ kernelbase_handle = module; load_locale_nls(); + NtQueryDefaultLocale( FALSE, &system_lcid ); NtQueryDefaultLocale( FALSE, &user_lcid ); - system_locale = get_locale_by_id( &system_lcid, 0 ); - user_locale = get_locale_by_id( &user_lcid, 0 ); - kernelbase_handle = module; + if (!(system_locale = get_locale_by_id( &system_lcid, 0 ))) + { + if (GetEnvironmentVariableW( L"WINELOCALE", bufferW, ARRAY_SIZE(bufferW) )) + { + system_locale = get_locale_by_name( bufferW, &system_lcid ); + if (system_lcid == LOCALE_CUSTOM_UNSPECIFIED) system_lcid = LOCALE_CUSTOM_DEFAULT; + } + } + if (!(user_locale = get_locale_by_id( &user_lcid, 0 ))) + { + if (GetEnvironmentVariableW( L"WINEUSERLOCALE", bufferW, ARRAY_SIZE(bufferW) )) + { + user_locale = get_locale_by_name( bufferW, &user_lcid ); + if (user_lcid == LOCALE_CUSTOM_UNSPECIFIED) user_lcid = LOCALE_CUSTOM_DEFAULT; + } + else + { + user_locale = system_locale; + user_lcid = system_lcid; + } + }
if (GetEnvironmentVariableW( L"WINEUNIXCP", bufferW, ARRAY_SIZE(bufferW) )) unix_cp = wcstoul( bufferW, NULL, 10 );