* libc/stdio/vfprintf.c (_VFPRINTF_R): Just wave bytes invalid in

the current charset through.
This commit is contained in:
Corinna Vinschen 2010-01-14 12:48:58 +00:00
parent 811de4bff3
commit 0b82c17d57
2 changed files with 22 additions and 2 deletions

View File

@ -1,3 +1,18 @@
2010-01-14 Corinna Vinschen <corinna@vinschen.de>
* libc/stdio/vfprintf.c (_VFPRINTF_R): Just wave bytes invalid in
the current charset through.
2010-01-13 Corinna Vinschen <corinna@vinschen.de>
* libc/locale/locale.c (lc_ctype_charset): Disable defaulting to
"UTF-8" on Cygwin.
(lc_message_charset): Ditto.
(loadlocale): Disable setting charset of the "C" locale to "UTF-8" on
Cygwin.
* libc/stdlib/mbtowc_r.c (__mbtowc): Add Cygwin-specific comment.
* libc/stdlib/wctomb_r.c (__wctomb): Ditto.
2010-01-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libc/posix/telldir.c (_cleanupdir): Fixed usage of freed memory.

View File

@ -724,8 +724,13 @@ _DEFUN(_VFPRINTF_R, (data, fp, fmt0, ap),
cp = fmt;
#ifdef _MB_CAPABLE
while ((n = __mbtowc (data, &wc, fmt, MB_CUR_MAX,
__locale_charset (), &state)) > 0) {
if (wc == '%')
__locale_charset (), &state)) != 0) {
if (n < 0) {
/* Wave invalid chars through. */
memset (&state, 0, sizeof state);
n = 1;
}
else if (wc == '%')
break;
fmt += n;
}