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 + + * libc/stdlib/btowc.c (btowc): Reorganize EOF check. Fix incorrect + return value if input byte is ASCII NUL. + 2010-04-01 Joel Sherrill * 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; }