diff --git a/newlib/ChangeLog b/newlib/ChangeLog index f7a962ca9..d501fe600 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,9 @@ +2009-06-09 Corinna Vinschen + + * libc/ctype/tolower.c (tolower): Cast conversion result from + mbtowc/wctomb to unsigned char to avoid negative return values. + * libc/ctype/toupper.c (toupper): Ditto. + 2009-06-03 IWAMURO Motonori * libc/string/wcwidth.c: Optimize for speed. diff --git a/newlib/libc/ctype/tolower.c b/newlib/libc/ctype/tolower.c index 66ba7233c..8a3843ef2 100644 --- a/newlib/libc/ctype/tolower.c +++ b/newlib/libc/ctype/tolower.c @@ -67,7 +67,7 @@ _DEFUN(tolower,(c),int c) wchar_t wc; if (mbtowc (&wc, s, 1) >= 0 && wctomb (s, (wchar_t) towlower ((wint_t) wc)) == 1) - c = s[0]; + c = (unsigned char) s[0]; } return c; #else diff --git a/newlib/libc/ctype/toupper.c b/newlib/libc/ctype/toupper.c index 1b298d508..2527a69d3 100644 --- a/newlib/libc/ctype/toupper.c +++ b/newlib/libc/ctype/toupper.c @@ -66,7 +66,7 @@ _DEFUN(toupper,(c),int c) wchar_t wc; if (mbtowc (&wc, s, 1) >= 0 && wctomb (s, (wchar_t) towupper ((wint_t) wc)) == 1) - c = s[0]; + c = (unsigned char) s[0]; } return c; #else