summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/misc/wchar/wchar.c7
-rw-r--r--test/locale-mbwc/dat_iswctype.c2
2 files changed, 8 insertions, 1 deletions
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 } },