From: Piotr Caban Subject: msvcrt: Fix locale creation for multibyte encoding Message-Id: <4D9377E9.8050504@codeweavers.com> Date: Wed, 30 Mar 2011 20:35:21 +0200 --- dlls/msvcrt/locale.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-) diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 2f2be43..cecc90b 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -787,13 +787,15 @@ MSVCRT__locale_t MSVCRT__create_locale(int category, const char *locale) loc->locinfo->lc_category[MSVCRT_LC_CTYPE].locale = _strdup("C"); } - for(i=0; i<256; i++) - buf[i] = i; - - 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); + for(i=0; i<256; i++) { + buf[0] = i; + if(!LCMapStringA(lcid[MSVCRT_LC_CTYPE], LCMAP_LOWERCASE, buf, 1, + (char*)loc->locinfo->pclmap+i, 1)) + loc->locinfo->pclmap[i] = ' '; + if(!LCMapStringA(lcid[MSVCRT_LC_CTYPE], LCMAP_UPPERCASE, buf, 1, + (char*)loc->locinfo->pcumap+i, 1)) + loc->locinfo->pcumap[i] = ' '; + } loc->mbcinfo->refcount = 1; loc->mbcinfo->mbcodepage = loc->locinfo->lc_id[MSVCRT_LC_CTYPE].wCodePage;