[PATCH] Make sure mbrtowc can reset internal state after encoding error
Andreas Schwab
schwab@redhat.com
Wed May 4 12:45:00 GMT 2011
2011-05-04 Andreas Schwab <schwab@redhat.com>
* iconv/loop.c (SINGLE(LOOPFCT)): Reset conversion state after an
encoding error.
---
iconv/loop.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/iconv/loop.c b/iconv/loop.c
index da11bc2..d16d23a 100644
--- a/iconv/loop.c
+++ b/iconv/loop.c
@@ -477,6 +477,15 @@ SINGLE(LOOPFCT) (struct __gconv_step *step,
state->__value.__wchb[inlen++] = *inptr++;
#endif
}
+ else if (result == __GCONV_ILLEGAL_INPUT)
+ {
+ /* Clear the state buffer. */
+#ifdef CLEAR_STATE
+ CLEAR_STATE;
+#else
+ state->__count &= ~7;
+#endif
+ }
return result;
}
--
1.7.4.4
--
Andreas Schwab, schwab@redhat.com
GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E
"And now for something completely different."
More information about the Libc-hacker
mailing list