cvs: ZendEngine2 / zend_execute_API.c

From: Date: Thu, 11 Dec 2003 18:18:52 +0000
Subject: cvs: ZendEngine2 / zend_execute_API.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-2097@lists.php.net to get a copy of this message
helly Thu Dec 11 13:18:52 2003 EDT Modified files: /ZendEngine2 zend_execute_API.c Log: Bugfix: #26591 [NEW]: "__autoload threw an exception" during an uncaught Exception Index: ZendEngine2/zend_execute_API.c diff -u ZendEngine2/zend_execute_API.c:1.242 ZendEngine2/zend_execute_API.c:1.243 --- ZendEngine2/zend_execute_API.c:1.242 Wed Dec 10 05:24:35 2003 +++ ZendEngine2/zend_execute_API.c Thu Dec 11 13:18:52 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_execute_API.c,v 1.242 2003/12/10 10:24:35 helly Exp $ */ +/* $Id: zend_execute_API.c,v 1.243 2003/12/11 18:18:52 helly Exp $ */ #include <stdio.h> #include <signal.h> @@ -781,6 +781,7 @@ zval *retval_ptr; int retval; char *lc_name; + zval *exception; lc_name = do_alloca(name_length + 1); zend_str_tolower_copy(lc_name, name, name_length+1); @@ -797,17 +798,22 @@ args[0] = &class_name_ptr; + exception = EG(exception); + EG(exception) = NULL; retval = call_user_function_ex(EG(function_table), NULL, &autoload_function, &retval_ptr, 1, args, 0, NULL TSRMLS_CC); if (retval == FAILURE) { + EG(exception) = exception; free_alloca(lc_name); return FAILURE; } if (EG(exception)) { free_alloca(lc_name); - zend_error(E_ERROR, "__autoload threw an exception"); + zend_error(E_ERROR, "__autoload(%s) threw an exception of type '%s'", name, Z_OBJCE_P(EG(exception))->name); + return FAILURE; } + EG(exception) = exception; /* If an exception is thrown retval_ptr will be NULL but we bailout before we reach this point */ zval_ptr_dtor(&retval_ptr);

« previous php.zend-engine.cvs (#2097) next »