hardened the addChild function added accessors needed for xmlNode, a bit
* tree.c: hardened the addChild function
* python/generator.py python/libxml.c python/libxml2-python-api.xml
python/libxml2class.txt python/libxml_wrap.h python/TODO:
added accessors needed for xmlNode, a bit more testing and
extension of interfaces
* python/tests/Makefile.am python/tests/build.py: added a test
build from scratch/save/load/check
Daniel
diff --git a/tree.c b/tree.c
index 98fc4e9..23d2c6a 100644
--- a/tree.c
+++ b/tree.c
@@ -1950,10 +1950,20 @@
/*
* Allocate a new node
*/
- if (ns == NULL)
- cur = xmlNewDocNode(parent->doc, parent->ns, name, content);
- else
- cur = xmlNewDocNode(parent->doc, ns, name, content);
+ if (parent->type == XML_ELEMENT_NODE) {
+ if (ns == NULL)
+ cur = xmlNewDocNode(parent->doc, parent->ns, name, content);
+ else
+ cur = xmlNewDocNode(parent->doc, ns, name, content);
+ } else if ((parent->type == XML_DOCUMENT_NODE) ||
+ (parent->type == XML_HTML_DOCUMENT_NODE)) {
+ if (ns == NULL)
+ cur = xmlNewDocNode((xmlDocPtr) parent, NULL, name, content);
+ else
+ cur = xmlNewDocNode((xmlDocPtr) parent, ns, name, content);
+ } else {
+ return(NULL);
+ }
if (cur == NULL) return(NULL);
/*