From 2b77087a48ea56e77fca5aeab478c922f6473d7c Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 10 Jan 2010 13:54:34 +0000 Subject: * libc/stdlib/mbtowc_r.c (__ascii_mbtowc): Disallow conversion of non-ASCII chars on Cygwin. * libc/stdlib/wctomb_r.c (__ascii_wctomb): Ditto. --- newlib/libc/stdlib/mbtowc_r.c | 8 ++++++++ newlib/libc/stdlib/wctomb_r.c | 4 ++++ 2 files changed, 12 insertions(+) (limited to 'newlib/libc/stdlib') 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; -- cgit v1.2.3