diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-04-06 18:46:31 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-04-06 18:46:31 +0400 |
commit | 65ee447a029b37484a22272082fbdf876915c7ec (patch) | |
tree | 1146d26c804c8f5fc30b073ea9f82760d173eb81 | |
parent | 44ac55bcb6e087e6e181a4d893e5ede15e977a04 (diff) |
* libc/stdlib/btowc.c (btowc): Reorganize EOF check. Fix incorrect
return value if input byte is ASCII NUL.
-rw-r--r-- | newlib/ChangeLog | 5 | ||||
-rw-r--r-- | newlib/libc/stdlib/btowc.c | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index aa661b963..eeb3edde9 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2010-04-06 Corinna Vinschen <corinna@vinschen.de> + + * libc/stdlib/btowc.c (btowc): Reorganize EOF check. Fix incorrect + return value if input byte is ASCII NUL. + 2010-04-01 Joel Sherrill <joel.sherrill@oarcorp.com> * libc/include/sched.h: Include prototypes for diff --git a/newlib/libc/stdlib/btowc.c b/newlib/libc/stdlib/btowc.c index f5ef4624a..ec6c29152 100644 --- a/newlib/libc/stdlib/btowc.c +++ b/newlib/libc/stdlib/btowc.c @@ -13,6 +13,9 @@ btowc (int c) wchar_t pwc; unsigned char b; + if (c == EOF) + return WEOF; + b = (unsigned char)c; /* Put mbs in initial state. */ @@ -22,8 +25,8 @@ btowc (int c) retval = __mbtowc (_REENT, &pwc, &b, 1, __locale_charset (), &mbs); - if (c == EOF || retval != 1) + if (retval != 0 && retval != 1) return WEOF; - else - return (wint_t)pwc; + + return (wint_t)pwc; } |