Module: wine Branch: master Commit: 35c65edcb92557e34c424c2026614adfff21b500 URL: https://gitlab.winehq.org/wine/wine/-/commit/35c65edcb92557e34c424c2026614ad...
Author: Eric Pouech eric.pouech@gmail.com Date: Tue Oct 25 16:36:32 2022 +0200
kernel32/tests: Workaround some broken Windows behavior in console tests.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48105 Signed-off-by: Eric Pouech eric.pouech@gmail.com
---
dlls/kernel32/tests/console.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c index c2b7eb63a1e..1f285faf1e2 100644 --- a/dlls/kernel32/tests/console.c +++ b/dlls/kernel32/tests/console.c @@ -925,10 +925,16 @@ static void testScreenBuffer(HANDLE hConOut) SetConsoleCursorPosition(hConOutRW, c); ret = WriteConsoleA(hConOutRW, test_cp866, lstrlenA(test_cp866), &len, NULL); ok(ret && len == lstrlenA(test_cp866), "WriteConsoleA failed\n"); - ret = ReadConsoleOutputCharacterW(hConOutRW, str_wbuf, lstrlenA(test_cp866), c, &len); - ok(ret && len == lstrlenA(test_cp866), "ReadConsoleOutputCharacterW failed\n"); - str_wbuf[lstrlenA(test_cp866)] = 0; - ok(!lstrcmpW(str_wbuf, test_unicode), "string does not match the pattern\n"); + ret = ReadConsoleOutputCharacterW(hConOutRW, str_wbuf, lstrlenW(test_unicode), c, &len); + /* Work around some broken results under Windows with some locale (ja, cn, ko...) + * Looks like a real bug in Win10 (at least). + */ + if (ret && broken(len == lstrlenW(test_unicode) / sizeof(WCHAR))) + ret = ReadConsoleOutputCharacterW(hConOutRW, str_wbuf, lstrlenW(test_unicode) * sizeof(WCHAR), c, &len); + ok(ret, "ReadConsoleOutputCharacterW failed\n"); + ok(len == lstrlenW(test_unicode), "unexpected len %lu %u\n", len, lstrlenW(test_unicode)); + ok(!memcmp(str_wbuf, test_unicode, lstrlenW(test_unicode) * sizeof(WCHAR)), + "string does not match the pattern\n");
/* * cp866 is OK, let's switch to cp1251.