Jacek Caban : kernel32: Treat empty locale name as LOCALE_INVARIANT.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jun 10 10:09:18 CDT 2015
Module: wine
Branch: master
Commit: 09176c3aa020bac945e529829c0e809f70b5d6d3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=09176c3aa020bac945e529829c0e809f70b5d6d3
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Jun 9 23:18:47 2015 +0200
kernel32: Treat empty locale name as LOCALE_INVARIANT.
---
dlls/kernel32/locale.c | 7 +++++++
dlls/kernel32/tests/locale.c | 6 ++++--
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index bf4ace5..eaf1183 100644
--- a/dlls/kernel32/locale.c
+++ b/dlls/kernel32/locale.c
@@ -453,6 +453,13 @@ static void parse_locale_name( const WCHAR *str, struct locale_name *name )
name->win_name[0] = 0;
lstrcpynW( name->lang, str, sizeof(name->lang)/sizeof(WCHAR) );
+ if (!*name->lang)
+ {
+ name->lcid = LOCALE_INVARIANT;
+ name->matches = 4;
+ return;
+ }
+
if (!(p = strpbrkW( name->lang, sepW )))
{
if (!strcmpW( name->lang, posixW ) || !strcmpW( name->lang, cW ))
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index 9920dfc..061e331 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -2418,9 +2418,9 @@ static void test_LocaleNameToLCID(void)
buffer[0] = 0;
SetLastError(0xdeadbeef);
lcid = pLocaleNameToLCID(LOCALE_NAME_INVARIANT, 0);
- todo_wine ok(lcid == 0x7F, "Expected lcid = 0x7F, got %08x, error %d\n", lcid, GetLastError());
+ ok(lcid == 0x7F, "Expected lcid = 0x7F, got %08x, error %d\n", lcid, GetLastError());
ret = pLCIDToLocaleName(lcid, buffer, LOCALE_NAME_MAX_LENGTH, 0);
- ok(ret > 0, "Expected ret > 0, got %d, error %d\n", ret, GetLastError());
+ todo_wine ok(ret > 0, "Expected ret > 0, got %d, error %d\n", ret, GetLastError());
trace("%08x, %s\n", lcid, wine_dbgstr_w(buffer));
/* bad name */
@@ -4091,6 +4091,8 @@ static void test_IsValidLocaleName(void)
ok(!ret, "IsValidLocaleName should have failed\n");
ret = pIsValidLocaleName(zzzzW);
ok(!ret, "IsValidLocaleName should have failed\n");
+ ret = pIsValidLocaleName(LOCALE_NAME_INVARIANT);
+ ok(ret, "IsValidLocaleName failed\n");
}
static void test_CompareStringOrdinal(void)
More information about the wine-cvs
mailing list