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