From c08580dee320b46116a12afecdb0a0fb2ac6a632 Mon Sep 17 00:00:00 2001 From: winesync Date: Thu, 25 Apr 2024 19:59:18 +0300 Subject: [PATCH] [WINESYNC] kernel32: Don't return a parent locale for neutral locales in GetLocaleInfoEx. Signed-off-by: Alexandre Julliard wine commit id c63a08586f19af7e6a65a064696743f648006fcd by Alexandre Julliard --- dll/win32/kernel32/winnls/string/locale.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/dll/win32/kernel32/winnls/string/locale.c b/dll/win32/kernel32/winnls/string/locale.c index 8b9a109f5db..6c65b3f578d 100644 --- a/dll/win32/kernel32/winnls/string/locale.c +++ b/dll/win32/kernel32/winnls/string/locale.c @@ -1831,16 +1831,22 @@ INT WINAPI GetLocaleInfoEx(LPCWSTR locale, LCTYPE info, LPWSTR buffer, INT len) if (!lcid) return 0; /* special handling for neutral locale names */ - if (info == LOCALE_SNAME && locale && strlenW(locale) == 2) + if (locale && strlenW(locale) == 2) { - if (len && len < 3) + switch (info) { - SetLastError(ERROR_INSUFFICIENT_BUFFER); - return 0; + case LOCALE_SNAME: + if (len && len < 3) + { + SetLastError(ERROR_INSUFFICIENT_BUFFER); + return 0; + } + if (len) strcpyW(buffer, locale); + return 3; + case LOCALE_SPARENT: + if (len) buffer[0] = 0; + return 1; } - - if (len) strcpyW(buffer, locale); - return 3; } return GetLocaleInfoW(lcid, info, buffer, len);