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/ChangeLog b/ChangeLog
index 1b4d71d..94b7ea6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Apr  2 17:13:51 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
+
+	* 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
+
 Tue Mar 27 14:32:06 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
 
 	* configure.in Makefile.am config.h.in xmlversion.h.in: detect if
diff --git a/HTMLtree.c b/HTMLtree.c
index 12f4e38..66ccdca 100644
--- a/HTMLtree.c
+++ b/HTMLtree.c
@@ -961,12 +961,15 @@
      */
     type = cur->type;
     cur->type = XML_HTML_DOCUMENT_NODE;
-    if (cur->intSubset != NULL)
+    if (cur->intSubset != NULL) {
         htmlDtdDumpOutput(buf, cur, NULL);
-    else {
+#if 0
+    /* Disabled for XSLT output */
+    } else {
 	/* Default to HTML-4.0 transitionnal @@@@ */
 	xmlOutputBufferWriteString(buf, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n");
 
+#endif
     }
     if (cur->children != NULL) {
         htmlNodeListDumpOutput(buf, cur, cur->children, encoding);
@@ -975,7 +978,6 @@
     cur->type = (xmlElementType) type;
 }
 
-
 /************************************************************************
  *									*
  *		Saving functions front-ends				*
@@ -1130,6 +1132,8 @@
 		return(-1);
             htmlSetMetaEncoding(cur, (const xmlChar *) encoding);
 	}
+    } else {
+	htmlSetMetaEncoding(cur, (const xmlChar *) "UTF-8");
     }
 
     /*
diff --git a/tree.c b/tree.c
index 1735258..6d026b9 100644
--- a/tree.c
+++ b/tree.c
@@ -645,6 +645,10 @@
 
     q = cur;
     while (*cur != 0) {
+	/* TODO: attributes can inherits &#38; ...  
+	if ((*cur == '&') && (cur[1] == '#')) {
+	    int val = 
+	} else */
 	if (*cur == '&') {
 	    /*
 	     * Save the current text.
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);
 }