Skip to content

Commit 8645752

Browse files
committed
- Fixed memory leak when extending DOMXPath
1 parent 02b8362 commit 8645752

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

ext/dom/xpath.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ int dom_xpath_document_read(dom_object *obj, zval **retval TSRMLS_DC)
321321
xmlDoc *docp = NULL;
322322
xmlXPathContextPtr ctx;
323323
int ret;
324+
zval *tmp;
324325

325326
ctx = (xmlXPathContextPtr) obj->ptr;
326327

@@ -329,10 +330,15 @@ int dom_xpath_document_read(dom_object *obj, zval **retval TSRMLS_DC)
329330
}
330331

331332
ALLOC_ZVAL(*retval);
333+
tmp = *retval;
332334
if (NULL == (*retval = php_dom_create_object((xmlNodePtr) docp, &ret, NULL, *retval, obj TSRMLS_CC))) {
335+
FREE_ZVAL(tmp);
333336
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
334337
return FAILURE;
335338
}
339+
if (tmp != *retval) {
340+
FREE_ZVAL(tmp);
341+
}
336342
return SUCCESS;
337343
}
338344
/* }}} */

0 commit comments

Comments
 (0)