Author: jmb
Date: Sat Jun 28 17:03:43 2008
New Revision: 4474
URL:
http://source.netsurf-browser.org?rev=4474&view=rev
Log:
Make iconv-based filtering produce correct output when encountering encoding errors.
Fix inputstream_peek_slow to flag OOD when the buffer fill routine produces no new data.
Modified:
trunk/libparserutils/src/input/filter.c
trunk/libparserutils/src/input/inputstream.c
Modified: trunk/libparserutils/src/input/filter.c
URL:
http://source.netsurf-browser.org/trunk/libparserutils/src/input/filter.c...
==============================================================================
--- trunk/libparserutils/src/input/filter.c (original)
+++ trunk/libparserutils/src/input/filter.c Sat Jun 28 17:03:43 2008
@@ -204,6 +204,16 @@
if (ret != (size_t) -1 || errno != EILSEQ)
break;
+ if (*outlen < 3)
+ return PARSERUTILS_NOMEM;
+
+ (*output)[0] = 0xef;
+ (*output)[1] = 0xbf;
+ (*output)[2] = 0xbd;
+
+ *output += 3;
+ *outlen -= 3;
+
(*data)++;
(*len)--;
}
Modified: trunk/libparserutils/src/input/inputstream.c
URL:
http://source.netsurf-browser.org/trunk/libparserutils/src/input/inputstr...
==============================================================================
--- trunk/libparserutils/src/input/inputstream.c (original)
+++ trunk/libparserutils/src/input/inputstream.c Sat Jun 28 17:03:43 2008
@@ -235,7 +235,8 @@
/* Refill utf8 buffer from raw buffer */
error = parserutils_inputstream_refill_buffer(s);
- if (error != PARSERUTILS_OK)
+ if (error != PARSERUTILS_OK ||
+ s->public.cursor + offset == s->public.utf8->length)
return PARSERUTILS_INPUTSTREAM_OOD;
/* Now try the read */