iliaa Thu Aug 3 14:53:51 2006 UTC
Modified files:
/php-src/ext/spl php_spl.c
Log:
MFB: Fixed bug #38303 (spl_autoload_register() supress all errors
silently).
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/php_spl.c?r1=1.95&r2=1.96&diff_format=u
Index: php-src/ext/spl/php_spl.c
diff -u php-src/ext/spl/php_spl.c:1.95 php-src/ext/spl/php_spl.c:1.96
--- php-src/ext/spl/php_spl.c:1.95 Sun Jul 9 10:22:03 2006
+++ php-src/ext/spl/php_spl.c Thu Aug 3 14:53:51 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_spl.c,v 1.95 2006/07/09 10:22:03 helly Exp $ */
+/* $Id: php_spl.c,v 1.96 2006/08/03 14:53:51 iliaa Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -211,10 +211,25 @@
zend_file_handle file_handle;
zend_op_array *new_op_array;
zval *result = NULL;
+ zval err_mode;
+ int ret;
class_file_len = spprintf(&class_file, 0, "%s%s", lc_name,
file_extension);
- if (zend_stream_open(class_file, &file_handle TSRMLS_CC) == SUCCESS) {
+ ZVAL_LONG(&err_mode, EG(error_reporting));
+ if (Z_LVAL(err_mode)) {
+ php_alter_ini_entry("error_reporting",
sizeof("error_reporting"), "0", 1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
+ }
+
+ ret = zend_stream_open(class_file, &file_handle TSRMLS_CC);
+
+ if (!EG(error_reporting) && Z_LVAL(err_mode) != EG(error_reporting)) {
+ convert_to_string(&err_mode);
+ zend_alter_ini_entry("error_reporting",
sizeof("error_reporting"), Z_STRVAL(err_mode), Z_STRLEN(err_mode),
ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
+ zendi_zval_dtor(err_mode);
+ }
+
+ if (ret == SUCCESS) {
if (!file_handle.opened_path) {
file_handle.opened_path = estrndup(class_file,
class_file_len);
}
@@ -228,7 +243,7 @@
if (new_op_array) {
EG(return_value_ptr_ptr) = &result;
EG(active_op_array) = new_op_array;
-
+
zend_execute(new_op_array TSRMLS_CC);
destroy_op_array(new_op_array TSRMLS_CC);
@@ -258,15 +273,11 @@
zend_op **original_opline_ptr = EG(opline_ptr);
zend_op_array *original_active_op_array = EG(active_op_array);
zend_function_state *original_function_state_ptr =
EG(function_state_ptr);
- zval err_mode;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s",
&class_name, &class_name_len, &file_exts, &file_exts_len) == FAILURE) {
RETURN_FALSE;
}
- ZVAL_LONG(&err_mode, EG(error_reporting));
- php_alter_ini_entry("error_reporting", sizeof("error_reporting"), "0",
1, ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
-
copy = pos1 = estrdup(ZEND_NUM_ARGS() > 1 ? file_exts :
SPL_G(autoload_extensions));
lc_name = zend_str_tolower_dup(class_name, class_name_len);
while(pos1 && *pos1 && !EG(exception)) {
@@ -287,12 +298,6 @@
efree(copy);
}
- if (!EG(error_reporting) && Z_LVAL(err_mode) != EG(error_reporting)) {
- convert_to_string(&err_mode);
- zend_alter_ini_entry("error_reporting",
sizeof("error_reporting"), Z_STRVAL(err_mode), Z_STRLEN(err_mode),
ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME);
- zendi_zval_dtor(err_mode);
- }
-
EG(return_value_ptr_ptr) = original_return_value;
EG(opline_ptr) = original_opline_ptr;
EG(active_op_array) = original_active_op_array;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php