Commit 0b35b779 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

msvcrt: Don't use tolowerW in _tolower_l.

parent 7d2fafc0
......@@ -425,8 +425,7 @@ int CDECL MSVCRT__toupper(int c)
int CDECL MSVCRT__tolower_l(int c, MSVCRT__locale_t locale)
{
MSVCRT_pthreadlocinfo locinfo;
unsigned char str[2], *p = str;
WCHAR wide, lower;
unsigned char str[2], *p = str, ret[2];
if(!locale)
locinfo = get_locinfo();
......@@ -444,22 +443,15 @@ int CDECL MSVCRT__tolower_l(int c, MSVCRT__locale_t locale)
}
*p++ = c & 255;
if(!MultiByteToWideChar(locinfo->lc_codepage,
MB_ERR_INVALID_CHARS, (char*)str, p-str, &wide, 1))
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)) {
switch(__crtLCMapStringA(locinfo->lc_handle[MSVCRT_LC_CTYPE], LCMAP_LOWERCASE,
(char*)str, p-str, (char*)ret, 2, locinfo->lc_codepage, 0))
{
case 0:
return c;
case 1:
return str[0];
return ret[0];
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_mbcinfo(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
int __cdecl MSVCRT__write(int,const void*,unsigned int);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment