diff options
author | Marcus Boerger <helly@php.net> | 2005-03-11 01:14:29 +0000 |
---|---|---|
committer | Marcus Boerger <helly@php.net> | 2005-03-11 01:14:29 +0000 |
commit | 3d7b5b792ea3ca8d2bf1ba868fff21259851530b (patch) | |
tree | 3c211514f57419886db3ded1de7a2234d828237d /ext/xml/xml.c | |
parent | ad6e24cfb169ea7425010f0c668ac0797a0e72fd (diff) | |
download | php-git-3d7b5b792ea3ca8d2bf1ba868fff21259851530b.tar.gz |
- Bugfix #30266
Diffstat (limited to 'ext/xml/xml.c')
-rw-r--r-- | ext/xml/xml.c | 10 |
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; + } } /* }}} */ |