This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Make sure mbrtowc can reset internal state after encoding error


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."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]