From: Ilia Alshanetsky Date: Mon, 29 Mar 2004 00:50:52 +0000 (+0000) Subject: Fixed bug #27731 (error_reporting() inside @ block fails to set X-Git-Tag: php-5.0.0RC2RC1~177 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=62c80d5e6e9daa1aa2c3aa8eed21a1e4069cd747;p=php Fixed bug #27731 (error_reporting() inside @ block fails to set error_reporting level). --- diff --git a/Zend/tests/bug27731.phpt b/Zend/tests/bug27731.phpt new file mode 100644 index 0000000000..0c72d43504 --- /dev/null +++ b/Zend/tests/bug27731.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #27731 (error_reporing() call inside @ block does not work correctly) +--FILE-- + +--EXPECT-- +int(0) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 8051f3246e..a15eee043c 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -4092,11 +4092,13 @@ int zend_end_silence_handler(ZEND_OPCODE_HANDLER_ARGS) { zval restored_error_reporting; - restored_error_reporting.type = IS_LONG; - restored_error_reporting.value.lval = EX_T(opline->op1.u.var).tmp_var.value.lval; - convert_to_string(&restored_error_reporting); - zend_alter_ini_entry("error_reporting", sizeof("error_reporting"), Z_STRVAL(restored_error_reporting), Z_STRLEN(restored_error_reporting), ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME); - zendi_zval_dtor(restored_error_reporting); + if (EG(error_reporting)) { + restored_error_reporting.type = IS_LONG; + restored_error_reporting.value.lval = EX_T(opline->op1.u.var).tmp_var.value.lval; + convert_to_string(&restored_error_reporting); + zend_alter_ini_entry("error_reporting", sizeof("error_reporting"), Z_STRVAL(restored_error_reporting), Z_STRLEN(restored_error_reporting), ZEND_INI_USER, ZEND_INI_STAGE_RUNTIME); + zendi_zval_dtor(restored_error_reporting); + } NEXT_OPCODE(); }