Alexandre Julliard : kernelbase: Don't ignore the specified locale in CompareStringW.
Alexandre Julliard
julliard at winehq.org
Tue May 24 15:55:00 CDT 2022
Module: wine
Branch: master
Commit: a980fa0d786fe9a156b3b76f42e43c069ddde505
URL: https://source.winehq.org/git/wine.git/?a=commit;h=a980fa0d786fe9a156b3b76f42e43c069ddde505
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue May 24 18:21:08 2022 +0200
kernelbase: Don't ignore the specified locale in CompareStringW.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernelbase/locale.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/dlls/kernelbase/locale.c b/dlls/kernelbase/locale.c
index 692bba4316e..47d49a17cbe 100644
--- a/dlls/kernelbase/locale.c
+++ b/dlls/kernelbase/locale.c
@@ -4033,7 +4033,31 @@ INT WINAPI DECLSPEC_HOTPATCH CompareStringA( LCID lcid, DWORD flags, const char
INT WINAPI DECLSPEC_HOTPATCH CompareStringW( LCID lcid, DWORD flags, const WCHAR *str1, int len1,
const WCHAR *str2, int len2 )
{
- return CompareStringEx( NULL, flags, str1, len1, str2, len2, NULL, NULL, 0 );
+ const WCHAR *locale = LOCALE_NAME_USER_DEFAULT;
+ const NLS_LOCALE_LCID_INDEX *entry;
+
+ switch (lcid)
+ {
+ case LOCALE_NEUTRAL:
+ case LOCALE_USER_DEFAULT:
+ case LOCALE_SYSTEM_DEFAULT:
+ case LOCALE_CUSTOM_DEFAULT:
+ case LOCALE_CUSTOM_UNSPECIFIED:
+ case LOCALE_CUSTOM_UI_DEFAULT:
+ break;
+ default:
+ if (lcid == user_lcid || lcid == system_lcid) break;
+ if (!(entry = find_lcid_entry( lcid )))
+ {
+ WARN( "unknown locale %04lx\n", lcid );
+ SetLastError( ERROR_INVALID_PARAMETER );
+ return 0;
+ }
+ locale = locale_strings + entry->name + 1;
+ break;
+ }
+
+ return CompareStringEx( locale, flags, str1, len1, str2, len2, NULL, NULL, 0 );
}
More information about the wine-cvs
mailing list