15951683 xml parsing fails on valid docs
authorPetr Sumbera <petr.sumbera@oracle.com>
Fri, 07 Dec 2012 09:29:14 -0800
changeset 1075 f0a05f4e7b31
parent 1074 8ae50a0d434a
child 1076 aa4e6bad6e1d
15951683 xml parsing fails on valid docs
components/libxml2/patches/bug684774.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/libxml2/patches/bug684774.patch	Fri Dec 07 09:29:14 2012 -0800
@@ -0,0 +1,52 @@
+See:
+
+http://git.gnome.org/browse/libxml2/commit/?id=6c91aa384f48ff6d406553a6dd47fd556c1ef2e6
+
+From 6c91aa384f48ff6d406553a6dd47fd556c1ef2e6 Mon Sep 17 00:00:00 2001
+From: Daniel Veillard <[email protected]>
+Date: Thu, 25 Oct 2012 07:33:59 +0000
+Subject: Fix a regression in 2.9.0 breaking validation while streaming
+
+https://bugzilla.gnome.org/show_bug.cgi?id=684774
+with help from Kjell Ahlstedt <[email protected]>
+---
+diff --git a/SAX2.c b/SAX2.c
+index a24abc8..3eea39a 100644
+--- a/SAX2.c
++++ b/SAX2.c
[email protected]@ -2202,7 +2202,7 @@ xmlSAX2StartElementNs(void *ctx,
+ 	  (ctxt->myDoc->intSubset->elements == NULL) &&
+ 	  (ctxt->myDoc->intSubset->attributes == NULL) &&
+ 	  (ctxt->myDoc->intSubset->entities == NULL)))) {
+-	xmlErrValid(ctxt, XML_ERR_NO_DTD,
++	xmlErrValid(ctxt, XML_DTD_NO_DTD,
+ 	  "Validation failed: no DTD found !", NULL, NULL);
+ 	ctxt->validate = 0;
+     }
+diff --git a/parser.c b/parser.c
+index 28b0d80..19f1217 100644
+--- a/parser.c
++++ b/parser.c
[email protected]@ -11633,7 +11633,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
+ 			    "PP: Parsing internal subset\n");
+ #endif
+ 		    ctxt->inSubset = 1;
+-                    ctxt->progressive = 1;
++                    ctxt->progressive = 0;
+ 		    ctxt->checkIndex = 0;
+ 		    xmlParseDocTypeDecl(ctxt);
+ 		    if (RAW == '[') {
[email protected]@ -12219,7 +12219,10 @@ xmldecl_done:
+ 	}
+ 	ctxt->instate = XML_PARSER_EOF;
+     }
+-    return((xmlParserErrors) ctxt->errNo);
++    if (ctxt->wellFormed == 0)
++	return((xmlParserErrors) ctxt->errNo);
++    else
++        return(0);
+ }
+ 
+ /************************************************************************
+--
+cgit v0.9.0.2