[PATCH 1/3] msvcrt: Only lowercase A-Z in C locale.
Daniel Lehman
dlehman25 at gmail.com
Sun Jan 27 22:57:46 CST 2019
Signed-off-by: Daniel Lehman <dlehman25 at gmail.com>
---
dlls/msvcrt/tests/string.c | 2 --
dlls/msvcrt/wcs.c | 13 +++++++++++++
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c
index a159132972..4f8b8b0dfb 100644
--- a/dlls/msvcrt/tests/string.c
+++ b/dlls/msvcrt/tests/string.c
@@ -3633,7 +3633,6 @@ static void test_C_locale(void)
ok(ret == exp, "expected %x, got %x for C locale\n", exp, ret);
}
else
- todo_wine_if(ret != i)
ok(ret == i, "expected self %x, got %x for C locale\n", i, ret);
ret = p_towupper(i);
@@ -3664,7 +3663,6 @@ static void test_C_locale(void)
ok(ret == exp, "expected %x, got %x for C locale\n", exp, ret);
}
else
- todo_wine_if(ret != j)
ok(ret == j, "expected self %x, got %x for C locale\n", j, ret);
ret = p__towupper_l(j, locale);
diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index a6d7c1f200..d96da44737 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -2494,6 +2494,19 @@ int CDECL MSVCRT_towupper(MSVCRT_wint_t c)
*/
int CDECL MSVCRT__towlower_l(MSVCRT_wint_t c, MSVCRT__locale_t locale)
{
+ MSVCRT_pthreadlocinfo locinfo;
+
+ if(!locale)
+ locinfo = get_locinfo();
+ else
+ locinfo = locale->locinfo;
+
+ if(!locinfo->lc_handle[MSVCRT_LC_CTYPE]) {
+ if(c >= 'A' && c <= 'Z')
+ return c + 'a' - 'A';
+ return c;
+ }
+
return tolowerW(c);
}
--
2.17.1
More information about the wine-devel
mailing list