cvs: php-src(PHP_5_3) /ext/spl/tests spl_autoload_012.phpt ZendEngine2 zend_execute_API.c

From: Date: Mon, 15 Sep 2008 10:19:53 +0000
Subject: cvs: php-src(PHP_5_3) /ext/spl/tests spl_autoload_012.phpt ZendEngine2 zend_execute_API.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-53151@lists.php.net to get a copy of this message
colder Mon Sep 15 10:19:53 2008 UTC Modified files: (Branch: PHP_5_3) /ZendEngine2 zend_execute_API.c /php-src/ext/spl/tests spl_autoload_012.phpt Log: MFH: Fix #45656 (new Class silenting exceptions in autoloaders) http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_execute_API.c?r1=1.331.2.20.2.24.2.56&r2=1.331.2.20.2.24.2.57&diff_format=u Index: ZendEngine2/zend_execute_API.c diff -u ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.56 ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.57 --- ZendEngine2/zend_execute_API.c:1.331.2.20.2.24.2.56 Tue Aug 26 08:38:26 2008 +++ ZendEngine2/zend_execute_API.c Mon Sep 15 10:19:53 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.56 2008/08/26 08:38:26 dmitry Exp $ */ +/* $Id: zend_execute_API.c,v 1.331.2.20.2.24.2.57 2008/09/15 10:19:53 colder Exp $ */ #include <stdio.h> #include <signal.h> @@ -970,7 +970,6 @@ int retval; char *lc_name; char *lc_free; - zval *exception; zend_fcall_info fcall_info; zend_fcall_info_cache fcall_cache; char dummy = 1; @@ -1035,31 +1034,24 @@ fcall_cache.called_scope = NULL; fcall_cache.object_pp = NULL; - exception = EG(exception); zend_exception_save(TSRMLS_C); retval = zend_call_function(&fcall_info, &fcall_cache TSRMLS_CC); + zend_exception_restore(TSRMLS_C); + EG(autoload_func) = fcall_cache.function_handler; zval_ptr_dtor(&class_name_ptr); zend_hash_del(EG(in_autoload), lc_name, name_length + 1); - if (retval == FAILURE) { - zend_exception_restore(TSRMLS_C); - free_alloca(lc_free, use_heap); - return FAILURE; + if (retval_ptr) { + zval_ptr_dtor(&retval_ptr); } - if (EG(exception) && exception) { - zend_exception_restore(TSRMLS_C); + if (retval == FAILURE) { free_alloca(lc_free, use_heap); - zend_error(E_ERROR, "Function %s(%s) threw an exception of type '%s'", ZEND_AUTOLOAD_FUNC_NAME, name, Z_OBJCE_P(EG(exception))->name); return FAILURE; } - zend_exception_restore(TSRMLS_C); - if (retval_ptr) { - zval_ptr_dtor(&retval_ptr); - } retval = zend_hash_find(EG(class_table), lc_name, name_length + 1, (void **) ce); free_alloca(lc_free, use_heap); @@ -1493,7 +1485,7 @@ if (rt_ns_check && zend_lookup_class_ex(class_name, class_name_len, 1, &pce TSRMLS_CC) == SUCCESS) { return *pce; } - if (!silent) { + if (!silent && !EG(exception)) { if (fetch_type == ZEND_FETCH_CLASS_INTERFACE) { zend_error(E_ERROR, "Interface '%s' not found", class_name); } else { http://cvs.php.net/viewvc.cgi/php-src/ext/spl/tests/spl_autoload_012.phpt?r1=1.1.2.3&r2=1.1.2.4&diff_format=u Index: php-src/ext/spl/tests/spl_autoload_012.phpt diff -u php-src/ext/spl/tests/spl_autoload_012.phpt:1.1.2.3 php-src/ext/spl/tests/spl_autoload_012.phpt:1.1.2.4 --- php-src/ext/spl/tests/spl_autoload_012.phpt:1.1.2.3 Fri Aug 8 14:09:45 2008 +++ php-src/ext/spl/tests/spl_autoload_012.phpt Mon Sep 15 10:19:53 2008 @@ -26,6 +26,14 @@ } while($e = $e->getPrevious()); } +try { + new ThisClassDoesNotExist; +} catch(Exception $e) { + do { + echo $e->getMessage()."\n"; + } while($e = $e->getPrevious()); +} + class_exists('ThisClassDoesNotExist'); ?> ===DONE=== @@ -36,6 +44,10 @@ first autoload_first autoload_second +second +first +autoload_first +autoload_second Fatal error: Uncaught exception 'Exception' with message 'first' in %sspl_autoload_012.php:%d Stack trace:

« previous php.cvs (#53151) next »