Index: xmlreader.c =================================================================== --- xmlreader.c (revision 3787) +++ xmlreader.c (working copy) @@ -4500,7 +4500,7 @@ xmlTextReaderStandalone(xmlTextReaderPtr /* helper to build a xmlMalloc'ed string from a format and va_list */ static char * xmlTextReaderBuildMessage(const char *msg, va_list ap) { - int size; + int size, prev_size = -1; int chars; char *larger; char *str; @@ -4513,10 +4513,17 @@ xmlTextReaderBuildMessage(const char *ms size = 150; - while (1) { + while (size < 64000) { + va_start(ap, msg); chars = vsnprintf(str, size, msg, ap); - if ((chars > -1) && (chars < size)) - break; + va_end(ap); + if ((chars > -1) && (chars < size)) { + if (prev_size == chars) { + break; + } else { + prev_size = chars; + } + } if (chars > -1) size += chars + 1; else