]> granicus.if.org Git - php/commitdiff
- Fix #30266
authorMarcus Boerger <helly@php.net>
Fri, 11 Mar 2005 01:11:54 +0000 (01:11 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 11 Mar 2005 01:11:54 +0000 (01:11 +0000)
ext/xml/xml.c

index e2b8bb040e9496e7ff92f8d8608e15511542a1be..d77ebb1dda0401743664e3e50eff566ee3a97691 100644 (file)
@@ -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;
 }
 /* }}} */