Fix a memory leak which occurred when using

* xpath.c: Fix a memory leak which occurred when using
  xmlXPathCompiledEvalToBoolean().
diff --git a/xpath.c b/xpath.c
index 80c1685..f947404 100644
--- a/xpath.c
+++ b/xpath.c
@@ -13997,7 +13997,7 @@
     int ret, depth;
     int eval_all_nodes;
     xmlNodePtr cur = NULL, limit = NULL;
-    xmlStreamCtxtPtr patstream;
+    xmlStreamCtxtPtr patstream = NULL;
     
     int nb_nodes = 0;    
 
@@ -14027,15 +14027,17 @@
     }
     
     /*
-     * handle the special cases of / amd . being matched
+     * handle the special cases of "/" amd "." being matched
      */
     if (min_depth == 0) {
 	if (from_root) {
+	    /* Select "/" */
 	    if (toBool)
 		return(1);
 	    xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval,
 		(xmlNodePtr) ctxt->doc);
 	} else {
+	    /* Select "self::node()" */
 	    if (toBool)
 		return(1);
 	    xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, ctxt->node);
@@ -14097,7 +14099,7 @@
 	if (ret < 0) {
 	} else if (ret == 1) {
 	    if (toBool)
-		return(1);
+		goto return_1;
 	    xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur);
 	}
     }
@@ -14125,7 +14127,7 @@
 		    /* NOP. */
 		} else if (ret == 1) {
 		    if (toBool)
-			return(1);
+			goto return_1;
 		    xmlXPathNodeSetAddUnique((*resultSeq)->nodesetval, cur);
 		}
 		if ((cur->children == NULL) || (depth >= max_depth)) {
@@ -14197,8 +14199,14 @@
            nb_nodes, retObj->nodesetval->nodeNr);
 #endif
 
-    xmlFreeStreamCtxt(patstream);
+    if (patstream)
+	xmlFreeStreamCtxt(patstream);
     return(0);
+
+return_1:
+    if (patstream)
+	xmlFreeStreamCtxt(patstream);
+    return(1);
 }
 #endif /* XPATH_STREAMING */