Piotr Caban <piotr(a)codeweavers.com> writes:
@@ -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] = ' '; + }
It would probably be better to replace the DBCS lead chars in the input buffer first and then still do the whole mapping in one step. -- Alexandre Julliard julliard(a)winehq.org