- xinclude.c: Raphael Hertzog had a trouble with DTD nodes
being processed, applied his patch
- tree.c: fixed a bug raised in xmlStaticCopyNodeList()
Daniel
diff --git a/xinclude.c b/xinclude.c
index 3b31001..0909d3e 100644
--- a/xinclude.c
+++ b/xinclude.c
@@ -407,12 +407,26 @@
if (fragment == NULL) {
/*
* Add the top children list as the replacement copy.
- * ISSUE: seems we should scrap DTD info from the copied list.
*/
if (doc == NULL)
+ {
+ /* Hopefully a DTD declaration won't be copied from
+ * the same document */
ctxt->repTab[nr] = xmlCopyNodeList(ctxt->doc->children);
- else
+ } else {
+ /* DTD declarations can't be copied from included files */
+ xmlNodePtr node = doc->children;
+ while (node != NULL)
+ {
+ if (node->type == XML_DTD_NODE)
+ {
+ xmlUnlinkNode(node);
+ xmlFreeNode(node);
+ }
+ node = node->next;
+ }
ctxt->repTab[nr] = xmlCopyNodeList(doc->children);
+ }
} else {
/*
* Computes the XPointer expression and make a copy used