diff --git a/ChangeLog b/ChangeLog
index 0bb08fe..24f2041 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jun 28 19:11:16 CEST 2006 Kasimier Buchcik <libxml2-cvs@cazic.net>
+
+	* xpath.c: Fix a memory leak which occurred when using
+	  xmlXPathCompiledEvalToBoolean().
+
 Mon Jun 26 17:24:28 UTC 2006 William Brack <wbrack@mmm.com.hk>
 
 	* python/libxml.c, python/libxml.py, python/tests/compareNodes.py,
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 */
 
