Piotr Caban : msvcrt: Fix pclmap and pcumap for "C" locale.

Alexandre Julliard julliard at winehq.org
Fri Jun 3 14:04:42 CDT 2011


Module: wine
Branch: master
Commit: 2b9d946aeaf3223b36d9ff3f3cb02aa100ed64a0
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2b9d946aeaf3223b36d9ff3f3cb02aa100ed64a0

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Jun  3 15:28:46 2011 +0200

msvcrt: Fix pclmap and pcumap for "C" locale.

---

 dlls/msvcrt/locale.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index 96a80c1..64960d9 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -826,10 +826,17 @@ MSVCRT__locale_t MSVCRT__create_locale(int category, const char *locale)
 
     }
 
-    LCMapStringA(lcid[MSVCRT_LC_CTYPE], LCMAP_LOWERCASE, buf, 256,
-            (char*)loc->locinfo->pclmap, 256);
-    LCMapStringA(lcid[MSVCRT_LC_CTYPE], LCMAP_UPPERCASE, buf, 256,
-            (char*)loc->locinfo->pcumap, 256);
+    if(lcid[MSVCRT_LC_CTYPE]) {
+        LCMapStringA(lcid[MSVCRT_LC_CTYPE], LCMAP_LOWERCASE, buf, 256,
+                (char*)loc->locinfo->pclmap, 256);
+        LCMapStringA(lcid[MSVCRT_LC_CTYPE], LCMAP_UPPERCASE, buf, 256,
+                (char*)loc->locinfo->pcumap, 256);
+    } else {
+        for(i=0; i<256; i++) {
+            loc->locinfo->pclmap[i] = (i>='A' && i<='Z' ? i-'A'+'a' : i);
+            loc->locinfo->pcumap[i] = (i>='a' && i<='z' ? i-'a'+'A' : i);
+        }
+    }
 
     loc->mbcinfo->refcount = 1;
     loc->mbcinfo->mbcodepage = loc->locinfo->lc_id[MSVCRT_LC_CTYPE].wCodePage;




More information about the wine-cvs mailing list