Small fixes: - xpath.c: fixed a memleak when comparing nodesets -

Small fixes:
- xpath.c: fixed a memleak when comparing nodesets
- HTMLtree.c: don't invent the HTML doctype if not available (XSLT)
- tree.c: added a TODO
Daniel
diff --git a/xpath.c b/xpath.c
index 9d49cd1..98f37c0 100644
--- a/xpath.c
+++ b/xpath.c
@@ -2541,22 +2541,35 @@
     xmlNodeSetPtr ns2;
 
     if ((arg1 == NULL) ||
-	((arg1->type != XPATH_NODESET) && (arg1->type != XPATH_XSLT_TREE)))
+	((arg1->type != XPATH_NODESET) && (arg1->type != XPATH_XSLT_TREE))) {
+	xmlXPathFreeObject(arg2);
         return(0);
+    }
     if ((arg2 == NULL) ||
-	((arg2->type != XPATH_NODESET) && (arg2->type != XPATH_XSLT_TREE)))
+	((arg2->type != XPATH_NODESET) && (arg2->type != XPATH_XSLT_TREE))) {
+	xmlXPathFreeObject(arg1);
+	xmlXPathFreeObject(arg2);
         return(0);
+    }
 
     ns1 = arg1->nodesetval;
     ns2 = arg2->nodesetval;
 
-    if (ns1->nodeNr <= 0)
+    if (ns1->nodeNr <= 0) {
+	xmlXPathFreeObject(arg1);
+	xmlXPathFreeObject(arg2);
 	return(0);
-    if (ns2->nodeNr <= 0)
+    }
+    if (ns2->nodeNr <= 0) {
+	xmlXPathFreeObject(arg1);
+	xmlXPathFreeObject(arg2);
 	return(0);
+    }
 
     values2 = (double *) xmlMalloc(ns2->nodeNr * sizeof(double));
     if (values2 == NULL) {
+	xmlXPathFreeObject(arg1);
+	xmlXPathFreeObject(arg2);
 	return(0);
     }
     for (i = 0;i < ns1->nodeNr;i++) {
@@ -2595,6 +2608,8 @@
 	init = 1;
     }
     xmlFree(values2);
+    xmlXPathFreeObject(arg1);
+    xmlXPathFreeObject(arg2);
     return(ret);
     return(0);
 }