Minimal changes for XSLT node-set() extra function:
- tree.c: minor doc fix
- xpath.c: deallocation issues when a result tree has been
converted to a node-set
Daniel
diff --git a/ChangeLog b/ChangeLog
index 3ba430d..8d564df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Feb 28 00:43:58 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+ * tree.c: minor doc fix
+ * xpath.c: deallocation issues when a result tree has been
+ converted to a node-set
+
Mon Feb 26 22:09:45 CET 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
* doc/xml.html: oops corrected dates s/2000/2001
diff --git a/tree.c b/tree.c
index 42acf7c..a33658e 100644
--- a/tree.c
+++ b/tree.c
@@ -3658,7 +3658,7 @@
* xmlSearchNs:
* @doc: the document
* @node: the current node
- * @nameSpace: the namespace string
+ * @nameSpace: the namespace prefix
*
* Search a Ns registered under a given name space for a document.
* recurse on the parents until it finds the defined namespace
diff --git a/xpath.c b/xpath.c
index ff7a89b..1bc30e6 100644
--- a/xpath.c
+++ b/xpath.c
@@ -999,6 +999,7 @@
}
memset(ret, 0 , (size_t) sizeof(xmlXPathObject));
ret->type = XPATH_NODESET;
+ ret->boolval = 0;
ret->nodesetval = xmlXPathNodeSetCreate(val);
return(ret);
}
@@ -1586,8 +1587,14 @@
xmlXPathFreeObject(xmlXPathObjectPtr obj) {
if (obj == NULL) return;
if (obj->type == XPATH_NODESET) {
- if (obj->nodesetval != NULL)
- xmlXPathFreeNodeSet(obj->nodesetval);
+ if (obj->boolval) {
+ obj->type = XPATH_XSLT_TREE;
+ if (obj->nodesetval != NULL)
+ xmlXPathFreeValueTree(obj->nodesetval);
+ } else {
+ if (obj->nodesetval != NULL)
+ xmlXPathFreeNodeSet(obj->nodesetval);
+ }
#ifdef LIBXML_XPTR_ENABLED
} else if (obj->type == XPATH_LOCATIONSET) {
if (obj->user != NULL)