]> granicus.if.org Git - php/commitdiff
- Fixed memory leak when extending DOMXPath
authorFelipe Pena <felipensp@gmail.com>
Sat, 14 Jul 2012 16:13:31 +0000 (13:13 -0300)
committerFelipe Pena <felipensp@gmail.com>
Sat, 14 Jul 2012 16:13:31 +0000 (13:13 -0300)
ext/dom/xpath.c

index de7b1fa32de01ae81fdea16690f51c48022100df..b5a31d7f92df2bc4ad9371be1c2c3ab46e74f9f8 100644 (file)
@@ -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;
 }
 /* }}} */