]> granicus.if.org Git - libexpat/commitdiff
Fix for #204, XML_ResumeParser regression
authorRhodri James <rhodri@wildebeest.org.uk>
Sun, 29 Jul 2018 19:17:27 +0000 (20:17 +0100)
committerSebastian Pipping <sebastian@pipping.org>
Fri, 3 Aug 2018 18:19:05 +0000 (20:19 +0200)
When we suspend at the end of input, we failed to update the
parser's m_processor field to point to the epilogProcessor.  When
the regular contentProcessor runs with no input, it returns an
error (which is what you usually want).  If we had not suspended,
in those circumstances we would have run the epilogProcessor
instead, so we just make sure this is the processor we will invoke
when we resume parsing.

expat/lib/xmlparse.c

index 435ee02254fef3e51729db200023e943f8f5a353..c3cd3859390e15f358aa801d5fdb343a3dc456f9 100644 (file)
@@ -3107,6 +3107,9 @@ doContent(XML_Parser parser,
     switch (parser->m_parsingStatus.parsing) {
     case XML_SUSPENDED:
       *nextPtr = next;
+      if (end == next) {
+          parser->m_processor = epilogProcessor;
+      }
       return XML_ERROR_NONE;
     case XML_FINISHED:
       return XML_ERROR_ABORTED;