Module: wine Branch: master Commit: 2ec3396122e3f6c7402bbdacea1bb311b264bd1a URL: https://source.winehq.org/git/wine.git/?a=commit;h=2ec3396122e3f6c7402bbdace...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Apr 1 10:30:17 2020 +0200
kernel32: Avoid using wctype functions.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/editline.c | 5 ++++- dlls/kernel32/format_msg.c | 4 ++-- dlls/kernel32/profile.c | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/kernel32/editline.c b/dlls/kernel32/editline.c index e3d52ccc1a..489960aba6 100644 --- a/dlls/kernel32/editline.c +++ b/dlls/kernel32/editline.c @@ -362,7 +362,10 @@ static void WCEL_SaveYank(WCEL_Context* ctx, int beg, int end) */ static inline BOOL WCEL_iswalnum(WCHAR wc) { - return get_char_typeW(wc) & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER); + WORD type; + + GetStringTypeW( CT_CTYPE1, &wc, 1, &type ); + return type & (C1_ALPHA|C1_DIGIT|C1_LOWER|C1_UPPER); }
static int WCEL_GetLeftWordTransition(WCEL_Context* ctx, int ofs) diff --git a/dlls/kernel32/format_msg.c b/dlls/kernel32/format_msg.c index 6a0dc5bd6b..f29c88fd38 100644 --- a/dlls/kernel32/format_msg.c +++ b/dlls/kernel32/format_msg.c @@ -184,7 +184,7 @@ static LPCWSTR format_insert( BOOL unicode_caller, int insert, LPCWSTR format, } else *p++ = *format++; } - while (isdigitW(*format)) *p++ = *format++; + while (*format >= '0' && *format <= '9') *p++ = *format++;
if (*format == '.') { @@ -196,7 +196,7 @@ static LPCWSTR format_insert( BOOL unicode_caller, int insert, LPCWSTR format, format++; } else - while (isdigitW(*format)) *p++ = *format++; + while (*format >= '0' && *format <= '9') *p++ = *format++; }
/* replicate MS bug: drop an argument when using va_list with width/precision */ diff --git a/dlls/kernel32/profile.c b/dlls/kernel32/profile.c index 434728c267..f7d64f16a5 100644 --- a/dlls/kernel32/profile.c +++ b/dlls/kernel32/profile.c @@ -270,8 +270,8 @@ static void PROFILE_Free( PROFILESECTION *section ) /* returns TRUE if a whitespace character, else FALSE */ static inline BOOL PROFILE_isspaceW(WCHAR c) { - /* ^Z (DOS EOF) is a space too (found on CD-ROMs) */ - return isspaceW(c) || c == 0x1a; + /* ^Z (DOS EOF) is a space too (found on CD-ROMs) */ + return (c >= 0x09 && c <= 0x0d) || c == 0x1a || c == 0x20; }
static inline ENCODING PROFILE_DetectTextEncoding(const void * buffer, int * len)