cvs: php4(PHP_4_3) /ext/domxml php_domxml.c

From: 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);

« previous php.cvs (#20176) next »