diff options
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/stdlib/mbtowc_r.c | 8 | ||||
-rw-r--r-- | newlib/libc/stdlib/wctomb_r.c | 4 |
2 files changed, 12 insertions, 0 deletions
diff --git a/newlib/libc/stdlib/mbtowc_r.c b/newlib/libc/stdlib/mbtowc_r.c index 863404fcb..f161385ed 100644 --- a/newlib/libc/stdlib/mbtowc_r.c +++ b/newlib/libc/stdlib/mbtowc_r.c @@ -47,6 +47,14 @@ _DEFUN (__ascii_mbtowc, (r, pwc, s, n, charset, state), if (n == 0) return -2; +#ifdef __CYGWIN__ + if ((wchar_t)*t >= 0x80) + { + r->_errno = EILSEQ; + return -1; + } +#endif + *pwc = (wchar_t)*t; if (*t == '\0') diff --git a/newlib/libc/stdlib/wctomb_r.c b/newlib/libc/stdlib/wctomb_r.c index 2c462ba63..d1ee4978d 100644 --- a/newlib/libc/stdlib/wctomb_r.c +++ b/newlib/libc/stdlib/wctomb_r.c @@ -40,7 +40,11 @@ _DEFUN (__ascii_wctomb, (r, s, wchar, charset, state), if (s == NULL) return 0; +#ifdef __CYGWIN__ + if ((size_t)wchar >= 0x80) +#else if ((size_t)wchar >= 0x100) +#endif { r->_errno = EILSEQ; return -1; |