From: Victor Chiletto vchiletto@codeweavers.com
--- dlls/msvcrt/locale.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index a2291c60eeb..76d66ce823d 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -380,10 +380,20 @@ BOOL locale_to_sname(const char *locale, unsigned short *codepage, BOOL *sname_m #endif
MultiByteToWideChar(CP_ACP, 0, search_language_buf, -1, search.search_language, MAX_ELEM_LEN); - if (!remapped) - MultiByteToWideChar(CP_ACP, 0, search_country_buf, -1, search.search_country, MAX_ELEM_LEN);
- EnumSystemLocalesEx( find_best_locale_proc, 0, (LPARAM)&search, NULL); + if (search.allow_sname && IsValidLocaleName(search.search_language)) + { + search.match_flags = FOUND_SNAME; + wcscpy(search.found_lang_sname, search.search_language); + } + else + { + if (!remapped) + MultiByteToWideChar(CP_ACP, 0, search_country_buf, -1, search.search_country, MAX_ELEM_LEN); + + EnumSystemLocalesEx( find_best_locale_proc, 0, (LPARAM)&search, NULL); + } +
if (!search.match_flags) return FALSE;