diff options
author | Daniel Veillard <veillard@redhat.com> | 2015-09-10 19:41:41 +0800 |
---|---|---|
committer | Daniel Veillard <veillard@redhat.com> | 2015-09-10 19:46:46 +0800 |
commit | ef709ce2f7b792d5fb69ed142796d743fb1eb388 (patch) | |
tree | 5060fdcc5f571307673e485f6f5478bed66377cb | |
parent | 3eaedba1b64180668fdab7ad2eba549586017bf3 (diff) | |
download | android_external_libxml2-ef709ce2f7b792d5fb69ed142796d743fb1eb388.tar.gz android_external_libxml2-ef709ce2f7b792d5fb69ed142796d743fb1eb388.tar.bz2 android_external_libxml2-ef709ce2f7b792d5fb69ed142796d743fb1eb388.zip |
Fix the spurious ID already defined error
For https://bugzilla.gnome.org/show_bug.cgi?id=737840
the fix for 724903 introduced a regression on external entities carrying
IDs, revert that patch in part and add a specific test to avoid readding it
-rw-r--r-- | result/valid/737840.xml | 10 | ||||
-rw-r--r-- | result/valid/737840.xml.err | 0 | ||||
-rw-r--r-- | result/valid/737840.xml.err.rdr | 0 | ||||
-rw-r--r-- | test/valid/737840.xml | 10 | ||||
-rw-r--r-- | test/valid/dtds/737840.ent | 1 | ||||
-rw-r--r-- | valid.c | 6 |
6 files changed, 25 insertions, 2 deletions
diff --git a/result/valid/737840.xml b/result/valid/737840.xml new file mode 100644 index 00000000..433c6d6d --- /dev/null +++ b/result/valid/737840.xml @@ -0,0 +1,10 @@ +<?xml version="1.0"?> +<!DOCTYPE root [ +<!ELEMENT root (elem)> +<!ELEMENT elem (#PCDATA)> +<!ATTLIST elem id ID #IMPLIED> +<!ENTITY target SYSTEM "dtds/737840.ent"> +]> +<root> + ⌖ +</root> diff --git a/result/valid/737840.xml.err b/result/valid/737840.xml.err new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/result/valid/737840.xml.err diff --git a/result/valid/737840.xml.err.rdr b/result/valid/737840.xml.err.rdr new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/result/valid/737840.xml.err.rdr diff --git a/test/valid/737840.xml b/test/valid/737840.xml new file mode 100644 index 00000000..2d27b731 --- /dev/null +++ b/test/valid/737840.xml @@ -0,0 +1,10 @@ +<!DOCTYPE root [ +<!ELEMENT root (elem)> +<!ELEMENT elem (#PCDATA)> +<!ATTLIST elem id ID #IMPLIED> +<!ENTITY target SYSTEM "dtds/737840.ent"> +]> + +<root> + ⌖ +</root> diff --git a/test/valid/dtds/737840.ent b/test/valid/dtds/737840.ent new file mode 100644 index 00000000..e9721324 --- /dev/null +++ b/test/valid/dtds/737840.ent @@ -0,0 +1 @@ +<elem id="id0"/>
\ No newline at end of file @@ -2634,8 +2634,10 @@ xmlAddID(xmlValidCtxtPtr ctxt, xmlDocPtr doc, const xmlChar *value, /* * The id is already defined in this DTD. */ - xmlErrValidNode(ctxt, attr->parent, XML_DTD_ID_REDEFINED, - "ID %s already defined\n", value, NULL, NULL); + if (ctxt != NULL) { + xmlErrValidNode(ctxt, attr->parent, XML_DTD_ID_REDEFINED, + "ID %s already defined\n", value, NULL, NULL); + } #endif /* LIBXML_VALID_ENABLED */ xmlFreeID(ret); return(NULL); |