lbarnaud Sat Apr 25 21:05:00 2009 UTC Modified files: /php-src/ext/spl php_spl.c Log: MFB5.3 (Fixed bug #38325 (spl_autoload_register() gaves wrong line for "class not found")) http://cvs.php.net/viewvc.cgi/php-src/ext/spl/php_spl.c?r1=1.153&r2=1.154&diff_format=u Index: php-src/ext/spl/php_spl.c diff -u php-src/ext/spl/php_spl.c:1.153 php-src/ext/spl/php_spl.c:1.154 --- php-src/ext/spl/php_spl.c:1.153 Mon Apr 20 14:18:46 2009 +++ php-src/ext/spl/php_spl.c Sat Apr 25 21:05:00 2009 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_spl.c,v 1.153 2009/04/20 14:18:46 colder Exp $ */ +/* $Id: php_spl.c,v 1.154 2009/04/25 21:05:00 lbarnaud Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -311,7 +311,22 @@ EG(active_op_array) = original_active_op_array; if (!found && !SPL_G(autoload_running)) { - zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Class %v could not be loaded", class_name); + /* For internal errors, we generate E_ERROR, for direct calls an exception is thrown. + * The "scope" is determined by an opcode, if it is ZEND_FETCH_CLASS we know function was called indirectly by + * the Zend engine. + */ + + char *sclass_name; + int sclass_name_len; + + zend_unicode_to_string(ZEND_U_CONVERTER(UG(output_encoding_conv)), &sclass_name, &sclass_name_len, + class_name.u, class_name_len); + + if (active_opline->opcode != ZEND_FETCH_CLASS) { + zend_throw_exception_ex(spl_ce_LogicException, 0 TSRMLS_CC, "Class %s could not be loaded", sclass_name); + } else { + php_error_docref(NULL TSRMLS_CC, E_ERROR, "Class %s could not be loaded", sclass_name); + } } } /* }}} */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php