diff options
Diffstat (limited to 'newlib/libc/stdlib/wctomb.c')
-rw-r--r-- | newlib/libc/stdlib/wctomb.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/newlib/libc/stdlib/wctomb.c b/newlib/libc/stdlib/wctomb.c index f2c62496f..2ab7b0339 100644 --- a/newlib/libc/stdlib/wctomb.c +++ b/newlib/libc/stdlib/wctomb.c @@ -48,6 +48,7 @@ effects vary with the locale. #include <newlib.h> #include <stdlib.h> +#include <errno.h> int _DEFUN (wctomb, (s, wchar), @@ -62,6 +63,12 @@ _DEFUN (wctomb, (s, wchar), if (s == NULL) return 0; + /* Verify that wchar is a valid single-byte character. */ + if ((size_t)wchar >= 0x100) { + errno = EILSEQ; + return -1; + } + *s = (char) wchar; return 1; #endif /* not _MB_CAPABLE */ |