Browse Source

Fixed bug #27731 (error_reporting() inside @ block fails to set

error_reporting level).
PEAR_1_4DEV
Ilia Alshanetsky 23 years ago
parent
commit
62c80d5e6e
  1. 10
      Zend/tests/bug27731.phpt
  2. 12
      Zend/zend_execute.c

10
Zend/tests/bug27731.phpt

@ -0,0 +1,10 @@
--TEST--
Bug #27731 (error_reporing() call inside @ block does not work correctly)
--FILE--
<?php
error_reporting(E_ALL ^ E_NOTICE);
@error_reporting(0);
var_dump(error_reporting());
?>
--EXPECT--
int(0)

12
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();
}

Loading…
Cancel
Save