diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 1475ebe57b7fd81d45e2cfb1b9625458334a9e52..0c10bb4cc935a2b8ba04aec828bed474d8794659 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -1620,7 +1620,7 @@ static void test_FoldStringA(void) static void test_FoldStringW(void) { int ret; - unsigned int i, j; + unsigned int i, j, failures; WCHAR src[256], dst[256], ch, prev_ch = 1; static const DWORD badFlags[] = { @@ -1907,7 +1907,7 @@ static void test_FoldStringW(void) } /* MAP_FOLDCZONE */ - for (ch = 1; ch <0xffff; ch++) + for (ch = 1, failures = 0; ch <0xffff; ch++) { WCHAR expected = 0; @@ -1939,6 +1939,11 @@ static void test_FoldStringW(void) ch == 0xff9e || ch == 0xff9f, "MAP_FOLDCZONE: ch %d 0x%04x Expected 0x%04x got 0x%04x\n", ch, ch, expected, dst[0]); + if (dst[0] != expected && ch < 0xf000 && ++failures > 50) + { + trace( "MAP_FOLDCZONE: Too many failures, giving up\n" ); + break; + } } /* MAP_EXPAND_LIGATURES */