cvs: php4(PHP_4_3) /ext/domxml php_domxml.c
| From: | Christian Stocker | Date: | Tue, 08 Apr 2003 19:30:46 +0000 |
| Subject: | cvs: php4(PHP_4_3) /ext/domxml php_domxml.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-20176@lists.php.net to get a copy of this message | ||
chregu Tue Apr 8 15:30:46 2003 EDT
Modified files: (Branch: PHP_4_3)
/php4/ext/domxml php_domxml.c
Log:
MFH (fixes memleaks in element->get_elements_by_tagname &
document->get_elements_by_tagname)
Index: php4/ext/domxml/php_domxml.c
diff -u php4/ext/domxml/php_domxml.c:1.218.2.14 php4/ext/domxml/php_domxml.c:1.218.2.15
--- php4/ext/domxml/php_domxml.c:1.218.2.14 Tue Apr 8 14:26:49 2003
+++ php4/ext/domxml/php_domxml.c Tue Apr 8 15:30:46 2003
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_domxml.c,v 1.218.2.14 2003/04/08 18:26:49 chregu Exp $ */
+/* $Id: php_domxml.c,v 1.218.2.15 2003/04/08 19:30:46 chregu Exp $ */
/* TODO
* - Support Notation Nodes
@@ -2981,6 +2981,7 @@
xmlXPathObjectPtr xpathobjp;
xmlNode *contextnodep;
int name_len;
+ int free_context = 0;
char *str,*name;
contextnode = NULL;
@@ -2991,6 +2992,7 @@
/* if no xpath_context was submitted, create a new one */
if (ctxpin == NULL) {
ctxp = xmlXPathNewContext(docp);
+ free_context = 1;
} else {
DOMXML_GET_OBJ(ctxp, ctxpin, le_xpathctxp);
}
@@ -3028,6 +3030,10 @@
if (NULL == (nodesetp = xpathobjp->nodesetval)) {
zval_dtor(rv);
+ xmlXPathFreeObject (xpathobjp);
+ if (free_context) {
+ xmlXPathFreeContext(ctxp);
+ }
RETURN_FALSE;
}
@@ -3047,6 +3053,10 @@
break;
}
+ xmlXPathFreeObject(xpathobjp);
+ if (free_context) {
+ xmlXPathFreeContext(ctxp);
+ }
*return_value = *rv;
FREE_ZVAL(rv);
}
@@ -3125,6 +3135,7 @@
zend_hash_next_index_insert(Z_ARRVAL_P(rv), &child, sizeof(zval *), NULL);
}
}
+ xmlXPathFreeNodeSet(nodesetp);
*return_value = *rv;
FREE_ZVAL(rv);