summaryrefslogtreecommitdiff
path: root/ext/xml/xml.c
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2005-03-11 01:14:29 +0000
committerMarcus Boerger <helly@php.net>2005-03-11 01:14:29 +0000
commit3d7b5b792ea3ca8d2bf1ba868fff21259851530b (patch)
tree3c211514f57419886db3ded1de7a2234d828237d /ext/xml/xml.c
parentad6e24cfb169ea7425010f0c668ac0797a0e72fd (diff)
downloadphp-git-3d7b5b792ea3ca8d2bf1ba868fff21259851530b.tar.gz
- Bugfix #30266
Diffstat (limited to 'ext/xml/xml.c')
-rw-r--r--ext/xml/xml.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/ext/xml/xml.c b/ext/xml/xml.c
index e2b8bb040e..293d68eed3 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;
+ }
}
/* }}} */