Alexandre Julliard : kernelbase: Check the locale name instead of the LCID to detect changes.

Alexandre Julliard julliard at winehq.org
Fri Apr 1 16:04:27 CDT 2022


Module: wine
Branch: master
Commit: c30626505b2782decc1370f9f60b82ebfd9f7c8f
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c30626505b2782decc1370f9f60b82ebfd9f7c8f

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Apr  1 16:00:46 2022 +0200

kernelbase: Check the locale name instead of the LCID to detect changes.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernelbase/locale.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/dlls/kernelbase/locale.c b/dlls/kernelbase/locale.c
index 4f0957ceff6..6bfa9604806 100644
--- a/dlls/kernelbase/locale.c
+++ b/dlls/kernelbase/locale.c
@@ -1543,6 +1543,7 @@ void init_locale( HMODULE module )
     void *sort_ptr;
     WCHAR bufferW[LOCALE_NAME_MAX_LENGTH];
     DYNAMIC_TIME_ZONE_INFORMATION timezone;
+    const WCHAR *user_locale_name;
     DWORD count;
     SIZE_T size;
     HKEY hkey;
@@ -1621,13 +1622,15 @@ void init_locale( HMODULE module )
     /* Update registry contents if the user locale has changed.
      * This simulates the action of the Windows control panel. */
 
+    user_locale_name = locale_strings + user_locale->sname + 1;
     count = sizeof(bufferW);
-    if (!RegQueryValueExW( intl_key, L"Locale", NULL, NULL, (BYTE *)bufferW, &count ))
+    if (!RegQueryValueExW( intl_key, L"LocaleName", NULL, NULL, (BYTE *)bufferW, &count ))
     {
-        if (wcstoul( bufferW, NULL, 16 ) == user_lcid) return;  /* already set correctly */
-        TRACE( "updating registry, locale changed %s -> %08lx\n", debugstr_w(bufferW), user_lcid );
+        if (!wcscmp( bufferW, user_locale_name )) return; /* unchanged */
+        TRACE( "updating registry, locale changed %s -> %s\n",
+               debugstr_w(bufferW), debugstr_w(user_locale_name) );
     }
-    else TRACE( "updating registry, locale changed none -> %08lx\n", user_lcid );
+    else TRACE( "updating registry, locale changed none -> %s\n", debugstr_w(user_locale_name) );
 
     update_locale_registry();
 




More information about the wine-cvs mailing list