From 62c80d5e6e9daa1aa2c3aa8eed21a1e4069cd747 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Mon, 29 Mar 2004 00:50:52 +0000 Subject: [PATCH] Fixed bug #27731 (error_reporting() inside @ block fails to set error_reporting level). --- Zend/tests/bug27731.phpt | 10 ++++++++++ Zend/zend_execute.c | 12 +++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 Zend/tests/bug27731.phpt 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(); } -- 2.40.0