Index: third_party/libxml/src/parser.c |
=================================================================== |
--- third_party/libxml/src/parser.c (revision 100884) |
+++ third_party/libxml/src/parser.c (working copy) |
@@ -4827,7 +4827,8 @@ |
(ctxt->sax->processingInstruction != NULL)) |
ctxt->sax->processingInstruction(ctxt->userData, |
target, NULL); |
- ctxt->instate = state; |
+ if (ctxt->instate != XML_PARSER_EOF) |
+ ctxt->instate = state; |
return; |
} |
buf = (xmlChar *) xmlMallocAtomic(size * sizeof(xmlChar)); |
@@ -4907,7 +4908,8 @@ |
} else { |
xmlFatalErr(ctxt, XML_ERR_PI_NOT_STARTED, NULL); |
} |
- ctxt->instate = state; |
+ if (ctxt->instate != XML_PARSER_EOF) |
+ ctxt->instate = state; |
} |
} |
@@ -9466,6 +9468,8 @@ |
else |
name = xmlParseStartTag(ctxt); |
#endif /* LIBXML_SAX1_ENABLED */ |
+ if (ctxt->instate == XML_PARSER_EOF) |
+ return; |
if (name == NULL) { |
spacePop(ctxt); |
return; |
@@ -10845,6 +10849,8 @@ |
else |
name = xmlParseStartTag(ctxt); |
#endif /* LIBXML_SAX1_ENABLED */ |
+ if (ctxt->instate == XML_PARSER_EOF) |
+ goto done; |
if (name == NULL) { |
spacePop(ctxt); |
ctxt->instate = XML_PARSER_EOF; |
@@ -11031,7 +11037,9 @@ |
else |
xmlParseEndTag1(ctxt, 0); |
#endif /* LIBXML_SAX1_ENABLED */ |
- if (ctxt->nameNr == 0) { |
+ if (ctxt->instate == XML_PARSER_EOF) { |
+ /* Nothing */ |
+ } else if (ctxt->nameNr == 0) { |
ctxt->instate = XML_PARSER_EPILOG; |
} else { |
ctxt->instate = XML_PARSER_CONTENT; |