From 8596cf884602b7cb682a771a9518b02de2cd27a4 Mon Sep 17 00:00:00 2001 From: Carmelo Amoroso Date: Tue, 2 Dec 2008 17:14:47 +0000 Subject: Fix wcswidth function when LOCALE support is disabled while keeping WCHAR support enabled. This solves two testcases: tst_wcwidth and tst_wcswidth. Fix dat_iswctype.c fiinput file: character 0x80 is not a control character: it fixes tst_iswctype test. Signed-off-by: Filippo Arcidiacono --- libc/misc/wchar/wchar.c | 7 +++++++ test/locale-mbwc/dat_iswctype.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libc/misc/wchar/wchar.c b/libc/misc/wchar/wchar.c index 23638ea8f..a28cd8f94 100644 --- a/libc/misc/wchar/wchar.c +++ b/libc/misc/wchar/wchar.c @@ -1143,6 +1143,13 @@ int wcswidth(const wchar_t *pwcs, size_t n) { int count; wchar_t wc; + size_t i; + + for (i = 0 ; (i < n) && pwcs[i] ; i++) { + if (pwcs[i] != (pwcs[i] & 0x7f)) { + return -1; + } + } for (count = 0 ; n && (wc = *pwcs++) ; n--) { if (wc <= 0xff) { diff --git a/test/locale-mbwc/dat_iswctype.c b/test/locale-mbwc/dat_iswctype.c index 6448b328f..0dcf1824e 100644 --- a/test/locale-mbwc/dat_iswctype.c +++ b/test/locale-mbwc/dat_iswctype.c @@ -240,7 +240,7 @@ TST_ISWCTYPE tst_iswctype_loc [] = { { { 0x007B, "cntrl" }, { 0,1,0 } }, { { 0x007E, "cntrl" }, { 0,1,0 } }, { { 0x007F, "cntrl" }, { 0,0,0 } }, - { { 0x0080, "cntrl" }, { 0,0,0 } }, + { { 0x0080, "cntrl" }, { 0,1,0 } }, { { 0x0000, "digit" }, { 0,1,0 } }, { { 0x001F, "digit" }, { 0,1,0 } }, { { 0x0020, "digit" }, { 0,1,0 } }, -- cgit v1.2.3