summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2005-03-11 01:11:54 +0000
committerMarcus Boerger <helly@php.net>2005-03-11 01:11:54 +0000
commit299a17ba37ae5641af766e318c7798f50b1870e2 (patch)
tree9bb28514bfe0d984b7b8a26b5512fe06f884931d
parentb924ef879671fe53f47620ebf360d0c7e3785cc9 (diff)
downloadphp-git-299a17ba37ae5641af766e318c7798f50b1870e2.tar.gz
- Fix #30266
-rw-r--r--ext/xml/xml.c12
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;
}
/* }}} */