msvcrt: Don't use tolowerW in _tolower_l.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
7d2fafc0f8
commit
0b35b77915
|
@ -425,8 +425,7 @@ int CDECL MSVCRT__toupper(int c)
|
||||||
int CDECL MSVCRT__tolower_l(int c, MSVCRT__locale_t locale)
|
int CDECL MSVCRT__tolower_l(int c, MSVCRT__locale_t locale)
|
||||||
{
|
{
|
||||||
MSVCRT_pthreadlocinfo locinfo;
|
MSVCRT_pthreadlocinfo locinfo;
|
||||||
unsigned char str[2], *p = str;
|
unsigned char str[2], *p = str, ret[2];
|
||||||
WCHAR wide, lower;
|
|
||||||
|
|
||||||
if(!locale)
|
if(!locale)
|
||||||
locinfo = get_locinfo();
|
locinfo = get_locinfo();
|
||||||
|
@ -444,22 +443,15 @@ int CDECL MSVCRT__tolower_l(int c, MSVCRT__locale_t locale)
|
||||||
}
|
}
|
||||||
*p++ = c & 255;
|
*p++ = c & 255;
|
||||||
|
|
||||||
if(!MultiByteToWideChar(locinfo->lc_codepage,
|
switch(__crtLCMapStringA(locinfo->lc_handle[MSVCRT_LC_CTYPE], LCMAP_LOWERCASE,
|
||||||
MB_ERR_INVALID_CHARS, (char*)str, p-str, &wide, 1))
|
(char*)str, p-str, (char*)ret, 2, locinfo->lc_codepage, 0))
|
||||||
return c;
|
{
|
||||||
|
|
||||||
lower = tolowerW(wide);
|
|
||||||
if(lower == wide)
|
|
||||||
return str[0] + (str[1]<<8);
|
|
||||||
|
|
||||||
switch(WideCharToMultiByte(locinfo->lc_codepage, 0,
|
|
||||||
&lower, 1, (char*)str, 2, NULL, NULL)) {
|
|
||||||
case 0:
|
case 0:
|
||||||
return c;
|
return c;
|
||||||
case 1:
|
case 1:
|
||||||
return str[0];
|
return ret[0];
|
||||||
default:
|
default:
|
||||||
return str[0] + (str[1]<<8);
|
return ret[0] + (ret[1]<<8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1130,6 +1130,7 @@ void __cdecl MSVCRT__free_locale(MSVCRT__locale_t);
|
||||||
void free_locinfo(MSVCRT_pthreadlocinfo) DECLSPEC_HIDDEN;
|
void free_locinfo(MSVCRT_pthreadlocinfo) DECLSPEC_HIDDEN;
|
||||||
void free_mbcinfo(MSVCRT_pthreadmbcinfo) DECLSPEC_HIDDEN;
|
void free_mbcinfo(MSVCRT_pthreadmbcinfo) DECLSPEC_HIDDEN;
|
||||||
int _setmbcp_l(int, LCID, MSVCRT_pthreadmbcinfo) DECLSPEC_HIDDEN;
|
int _setmbcp_l(int, LCID, MSVCRT_pthreadmbcinfo) DECLSPEC_HIDDEN;
|
||||||
|
int __cdecl __crtLCMapStringA(LCID, DWORD, const char*, int, char*, int, unsigned int, int) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
#ifndef __WINE_MSVCRT_TEST
|
#ifndef __WINE_MSVCRT_TEST
|
||||||
int __cdecl MSVCRT__write(int,const void*,unsigned int);
|
int __cdecl MSVCRT__write(int,const void*,unsigned int);
|
||||||
|
|
Loading…
Reference in New Issue