From d9ff660d1908a02733946f7f19a96ebd2feff3b9 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 24 Feb 2018 12:01:30 +0100 Subject: [PATCH] mbrtowc tests: Don't make assumptions about the charset the C locale. * tests/test-mbrtowc.c (main): For bytes >= 0x80, don't assume a particular mapping in the C locale. --- ChangeLog | 6 ++++++ tests/test-mbrtowc.c | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 66996fa90a..0c1ebc057e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2018-02-24 Bruno Haible + + mbrtowc tests: Don't make assumptions about the charset the C locale. + * tests/test-mbrtowc.c (main): For bytes >= 0x80, don't assume a + particular mapping in the C locale. + 2018-02-24 Bruno Haible ptsname_r: Don't expect that this function sets errno. diff --git a/tests/test-mbrtowc.c b/tests/test-mbrtowc.c index a0b5231a3f..54d52f8070 100644 --- a/tests/test-mbrtowc.c +++ b/tests/test-mbrtowc.c @@ -103,7 +103,15 @@ main (int argc, char *argv[]) wc = (wchar_t) 0xBADFACE; ret = mbrtowc (&wc, buf, 1, &state); ASSERT (ret == 1); - ASSERT (wc == c); + if (c < 0x80) + /* c is an ASCII character. */ + ASSERT (wc == c); + else + /* argv[1] starts with '5', that is, we are testing the C or POSIX + locale. + On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF. + But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF. */ + ASSERT (wc == btowc (c)); ASSERT (mbsinit (&state)); ret = mbrtowc (NULL, buf, 1, &state); ASSERT (ret == 1); -- 2.39.5