changeset 9586:97b702abd132 HEAD

lib-charset: Don't assert-crash when iconv() skips lots of invalid input.
author Timo Sirainen <tss@iki.fi>
date Mon, 21 Jun 2010 21:17:58 +0100
parents cdc66c6e0c6f
children 659f72bf92ae
files src/lib-charset/charset-iconv.c
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-charset/charset-iconv.c	Sat Jun 19 01:13:47 2010 +0300
+++ b/src/lib-charset/charset-iconv.c	Mon Jun 21 21:17:58 2010 +0100
@@ -131,7 +131,7 @@
 {
 	bool dtcase = (t->flags & CHARSET_FLAG_DECOMP_TITLECASE) != 0;
 	enum charset_result result;
-	size_t pos, used, size, prev_used = 0;
+	size_t pos, used, size, prev_pos = 0, prev_used = 0;
 	bool ret;
 
 	for (pos = 0;;) {
@@ -151,7 +151,8 @@
 			(void)buffer_append_space_unsafe(dest, size);
 			buffer_set_used_size(dest, used);
 		} else {
-			i_assert(dest->used != prev_used);
+			i_assert(dest->used != prev_used || pos != prev_pos);
+			prev_pos = pos;
 			prev_used = dest->used;
 		}
 	}