diff options
author | Marcus Boerger <helly@php.net> | 2005-03-11 01:11:54 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2005-03-11 01:11:54 +0000 |
commit | 299a17ba37ae5641af766e318c7798f50b1870e2 (patch) | |
tree | 9bb28514bfe0d984b7b8a26b5512fe06f884931d | |
parent | b924ef879671fe53f47620ebf360d0c7e3785cc9 (diff) | |
download | php-git-299a17ba37ae5641af766e318c7798f50b1870e2.tar.gz |
- Fix #30266
-rw-r--r-- | ext/xml/xml.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ext/xml/xml.c b/ext/xml/xml.c index e2b8bb040e..d77ebb1dda 100644 --- a/ext/xml/xml.c +++ b/ext/xml/xml.c @@ -388,12 +388,12 @@ static void xml_set_handler(zval **handler, zval **data) /* {{{ xml_call_handler() */ static zval *xml_call_handler(xml_parser *parser, zval *handler, zend_function *function_ptr, int argc, zval **argv) { + int i; TSRMLS_FETCH(); - if (parser && handler) { + if (parser && handler && !EG(exception)) { zval ***args; zval *retval; - int i; int result; zend_fcall_info fci; @@ -437,10 +437,14 @@ static zval *xml_call_handler(xml_parser *parser, zval *handler, zend_function * if (result == FAILURE) { return NULL; } else { - return retval; + return EG(exception) ? NULL : retval; } + } else { + for (i = 0; i < argc; i++) { + zval_ptr_dtor(&argv[i]); + } + return NULL; } - return NULL; } /* }}} */ |