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/python/libxml_wrap.h b/python/libxml_wrap.h
index 68daf01..679260a 100644
--- a/python/libxml_wrap.h
+++ b/python/libxml_wrap.h
@@ -15,20 +15,25 @@
#include <libxml/xinclude.h>
#include <libxml/xpointer.h>
-#define PyxmlNode_Get(v) (((PyxmlNode_Object *)(v))->obj)
+#define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \
+ (((PyxmlNode_Object *)(v))->obj))
typedef struct {
PyObject_HEAD
xmlNodePtr obj;
} PyxmlNode_Object;
-#define PyxmlXPathContext_Get(v) (((PyxmlXPathContext_Object *)(v))->obj)
+#define PyxmlXPathContext_Get(v) (((v) == Py_None) ? NULL : \
+ (((PyxmlXPathContext_Object *)(v))->obj))
+
typedef struct {
PyObject_HEAD
xmlXPathContextPtr obj;
} PyxmlXPathContext_Object;
-#define PyparserCtxt_Get(v) (((PyparserCtxt_Object *)(v))->obj)
+#define PyparserCtxt_Get(v) (((v) == Py_None) ? NULL : \
+ (((PyparserCtxt_Object *)(v))->obj))
+
typedef struct {
PyObject_HEAD
xmlParserCtxtPtr obj;