summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2005-10-10 10:53:52 +0000
committerDmitry Stogov <dmitry@php.net>2005-10-10 10:53:52 +0000
commit3019a1c6a39b27ca8a74b4726bd2629e22095aea (patch)
treec95124460f46026a30cc5c0046019e287e9a2bbe /Zend
parentb94970a3bde6db6550f9edac96a50f37e955582b (diff)
downloadphp-git-3019a1c6a39b27ca8a74b4726bd2629e22095aea.tar.gz
Fixed bug #34786 (2 @ results in change to error_reporting() to random value)
Diffstat (limited to 'Zend')
-rwxr-xr-xZend/tests/bug34786.phpt22
-rw-r--r--Zend/zend_vm_def.h4
-rw-r--r--Zend/zend_vm_execute.h4
3 files changed, 26 insertions, 4 deletions
diff --git a/Zend/tests/bug34786.phpt b/Zend/tests/bug34786.phpt
new file mode 100755
index 0000000000..18642848d8
--- /dev/null
+++ b/Zend/tests/bug34786.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Bug #34786 (2 @ results in change to error_reporting() to random value)
+--FILE--
+<?php
+function foo($a,$b,$c) {
+echo "foo: ".error_reporting()."\n";
+}
+
+function bar() {
+echo "bar: ".error_reporting()."\n";
+}
+
+error_reporting(1);
+echo "before: ".error_reporting()."\n";
+@foo(1,@bar(),3);
+echo "after: ".error_reporting()."\n";
+?>
+--EXPECT--
+before: 1
+bar: 0
+foo: 0
+after: 1
diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h
index 9b2c65b13b..af8d7ab163 100644
--- a/Zend/zend_vm_def.h
+++ b/Zend/zend_vm_def.h
@@ -3447,9 +3447,9 @@ ZEND_VM_HANDLER(57, ZEND_BEGIN_SILENCE, ANY, ANY)
{
zend_op *opline = EX(opline);
+ EX_T(opline->result.u.var).tmp_var.value.lval = EG(error_reporting);
+ EX_T(opline->result.u.var).tmp_var.type = IS_LONG; /* shouldn't be necessary */
if (EX(old_error_reporting) == NULL) {
- EX_T(opline->result.u.var).tmp_var.value.lval = EG(error_reporting);
- EX_T(opline->result.u.var).tmp_var.type = IS_LONG; /* shouldn't be necessary */
EX(old_error_reporting) = &EX_T(opline->result.u.var).tmp_var;
}
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 0f4de8e4cd..35d51db68d 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -429,9 +429,9 @@ static int ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{
zend_op *opline = EX(opline);
+ EX_T(opline->result.u.var).tmp_var.value.lval = EG(error_reporting);
+ EX_T(opline->result.u.var).tmp_var.type = IS_LONG; /* shouldn't be necessary */
if (EX(old_error_reporting) == NULL) {
- EX_T(opline->result.u.var).tmp_var.value.lval = EG(error_reporting);
- EX_T(opline->result.u.var).tmp_var.type = IS_LONG; /* shouldn't be necessary */
EX(old_error_reporting) = &EX_T(opline->result.u.var).tmp_var;
}