[libxml2] Fix handling of XML-1.0 XML namespace declaration
- From: Daniel Veillard <veillard src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxml2] Fix handling of XML-1.0 XML namespace declaration
- Date: Thu, 9 Sep 2010 16:21:29 +0000 (UTC)
commit aa54d37cd75399722f012e37f17d9ffeeddba556
Author: Daniel Veillard <veillard redhat com>
Date: Thu Sep 9 18:17:47 2010 +0200
Fix handling of XML-1.0 XML namespace declaration
Usually 'xml' namespace for XML-1.0 declaration does not need
to be carried but Mike Hommey raised the problem that the SVG
XSD file fails to parse due to a mishandling.
- SAX2.c: failure to create a namespace should not be interpreted
as a memory allocation error
- tree.c: document better xmlNewNs behaviour, and fix it in the
case the 'xml' prefix is being used.
SAX2.c | 8 ++++++--
tree.c | 15 +++++++++++++--
2 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/SAX2.c b/SAX2.c
index 84c1f00..c0482c0 100644
--- a/SAX2.c
+++ b/SAX2.c
@@ -2242,8 +2242,12 @@ xmlSAX2StartElementNs(void *ctx,
if ((URI != NULL) && (prefix == pref))
ret->ns = ns;
} else {
- xmlSAX2ErrMemory(ctxt, "xmlSAX2StartElementNs");
- return;
+ /*
+ * any out of memory error would already have been raised
+ * but we can't be garanteed it's the actual error due to the
+ * API, best is to skip in this case
+ */
+ continue;
}
#ifdef LIBXML_VALID_ENABLED
if ((!ctxt->html) && ctxt->validate && ctxt->wellFormed &&
diff --git a/tree.c b/tree.c
index 1e1a23a..24db82a 100644
--- a/tree.c
+++ b/tree.c
@@ -721,8 +721,19 @@ xmlNewNs(xmlNodePtr node, const xmlChar *href, const xmlChar *prefix) {
if ((node != NULL) && (node->type != XML_ELEMENT_NODE))
return(NULL);
- if ((prefix != NULL) && (xmlStrEqual(prefix, BAD_CAST "xml")))
- return(NULL);
+ if ((prefix != NULL) && (xmlStrEqual(prefix, BAD_CAST "xml"))) {
+ /* xml namespace is predefined, no need to add it */
+ if (xmlStrEqual(href, XML_XML_NAMESPACE))
+ return(NULL);
+
+ /*
+ * Problem, this is an attempt to bind xml prefix to a wrong
+ * namespace, which breaks
+ * Namespace constraint: Reserved Prefixes and Namespace Names
+ * from XML namespace. But documents authors may not care in
+ * their context so let's proceed.
+ */
+ }
/*
* Allocate a new Namespace and fill the fields.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]