]> granicus.if.org Git - php/commitdiff
Fixed bug #34786 (2 @ results in change to error_reporting() to random value)
authorDmitry Stogov <dmitry@php.net>
Mon, 10 Oct 2005 10:53:52 +0000 (10:53 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 10 Oct 2005 10:53:52 +0000 (10:53 +0000)
NEWS
Zend/tests/bug34786.phpt [new file with mode: 0755]
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

diff --git a/NEWS b/NEWS
index bab67adfe65312c0e4927828441229a4d7273a8f..c467282198256d7ae77969a2ae3a718942d10dd6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -48,6 +48,8 @@ PHP                                                                        NEWS
 - Fixed bug #34788 (SOAP Client not applying correct namespace to generated
   values). (Dmitry)
 - Fixed bug #34787 (SOAP Client not handling boolean types correctly). (Dmitry)
+- Fixed bug #34786 (2 @ results in change to error_reporting() to random value)
+  (Dmitry, Tony)
 - Fixed bug #34785 (subclassing of mysqli_stmt does not work). (Georg)
 - Fixed bug #34777 (Crash in dblib when fetching non-existent error info). (Ilia)
 - Fixed bug #34771 (strtotime() fails with 1-12am/pm). (Derick)
diff --git a/Zend/tests/bug34786.phpt b/Zend/tests/bug34786.phpt
new file mode 100755 (executable)
index 0000000..1864284
--- /dev/null
@@ -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
index 9b2c65b13b1049771cea6bb28af1522b8379d45a..af8d7ab16334bf7147774d879dc711a858e29d4c 100644 (file)
@@ -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;
        }
        
index 0f4de8e4cd239170c7359381d600af4086c229de..35d51db68d795302e2c26072f1f253a312bc283f 100644 (file)
@@ -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;
        }