From: Felipe Pena Date: Sat, 14 Jul 2012 16:13:31 +0000 (-0300) Subject: - Fixed memory leak when extending DOMXPath X-Git-Tag: php-5.3.16~21 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=864575251ac85176b763a56b35c2da298e0d0fa7;p=php - Fixed memory leak when extending DOMXPath --- diff --git a/ext/dom/xpath.c b/ext/dom/xpath.c index de7b1fa32d..b5a31d7f92 100644 --- a/ext/dom/xpath.c +++ b/ext/dom/xpath.c @@ -321,6 +321,7 @@ int dom_xpath_document_read(dom_object *obj, zval **retval TSRMLS_DC) xmlDoc *docp = NULL; xmlXPathContextPtr ctx; int ret; + zval *tmp; ctx = (xmlXPathContextPtr) obj->ptr; @@ -329,10 +330,15 @@ int dom_xpath_document_read(dom_object *obj, zval **retval TSRMLS_DC) } ALLOC_ZVAL(*retval); + tmp = *retval; if (NULL == (*retval = php_dom_create_object((xmlNodePtr) docp, &ret, NULL, *retval, obj TSRMLS_CC))) { + FREE_ZVAL(tmp); php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); return FAILURE; } + if (tmp != *retval) { + FREE_ZVAL(tmp); + } return SUCCESS; } /* }}} */