fixing #151456, an encoding error could generate a serialization loop.
* xmlIO.c: fixing #151456, an encoding error could generate
a serialization loop.
Daniel
diff --git a/ChangeLog b/ChangeLog
index 5b9df46..2402eb4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Aug 31 14:14:30 CEST 2004 Daniel Veillard <daniel@veillard.com>
+
+ * xmlIO.c: fixing #151456, an encoding error could generate
+ a serialization loop.
+
Tue Aug 31 11:34:04 CEST 2004 Daniel Veillard <daniel@veillard.com>
* Makefile.am: also produce a tar ball with just the sources
diff --git a/xmlIO.c b/xmlIO.c
index a80c583..13a57e7 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -3024,6 +3024,7 @@
int nbchars = 0; /* number of chars to output to I/O */
int ret; /* return from function call */
int written = 0; /* number of char written to I/O so far */
+ int oldwritten=0;/* loop guard */
int chunk; /* number of byte currently processed from str */
int len; /* number of bytes in str */
int cons; /* byte from str consumed */
@@ -3035,6 +3036,8 @@
if (escaping == NULL) escaping = xmlEscapeContent;
do {
+ oldwritten = written;
+
/*
* how many bytes to consume and how many bytes to store.
*/
@@ -3111,7 +3114,7 @@
xmlBufferResize(out->buffer, out->buffer->size + MINLEN);
}
written += nbchars;
- } while (len > 0);
+ } while ((len > 0) && (oldwritten != written));
done:
#ifdef DEBUG_INPUT