]> granicus.if.org Git - php/commitdiff
Fixed bug #73916 (zend_print_flat_zval_r doesn't consider reference)
authorXinchen Hui <laruence@gmail.com>
Fri, 13 Jan 2017 05:04:37 +0000 (13:04 +0800)
committerXinchen Hui <laruence@gmail.com>
Fri, 13 Jan 2017 05:04:37 +0000 (13:04 +0800)
NEWS
Zend/tests/bug73916.phpt [new file with mode: 0644]
Zend/zend.c

diff --git a/NEWS b/NEWS
index efbee5e7175ea340d5c3109366f0ba7fa899176b..27788427d4137e8eac297afeb263426e6cde14e0 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,8 +3,10 @@ PHP                                                                        NEWS
 ?? ??? 2017 PHP 7.0.16
 
 - Core:
+  . Fixed bug #73916 (zend_print_flat_zval_r doesn't consider reference).
+    (Laruence)
   . Fixed bug #73876 (Crash when exporting **= in expansion of assign op).
-  (Sara)
+    (Sara)
 
 - FPM:
   . Fixed bug #67583 (double fastcgi_end_request on max_children limit).
diff --git a/Zend/tests/bug73916.phpt b/Zend/tests/bug73916.phpt
new file mode 100644 (file)
index 0000000..ba2567e
--- /dev/null
@@ -0,0 +1,16 @@
+--TEST--
+Bug #73916 (zend_print_flat_zval_r doesn't consider reference)
+--FILE--
+<?php
+$a = array('a');
+class b{};
+$b = new b;
+$test[] =& $a;
+$test[] =& $b;
+test($test);
+function test() {
+       debug_print_backtrace();
+}
+?>
+--EXPECTF--
+#0  test(Array ([0] => Array ([0] => a),[1] => b Object ())) called at [%sbug73916.php:%d]
index 3f3ca75e382b1dec98fd138307d812f36f02251e..2a47e9244ba787a2ad35e9220171b04d1a5de634 100644 (file)
@@ -312,6 +312,9 @@ ZEND_API void zend_print_flat_zval_r(zval *expr) /* {{{ */
                        ZEND_PUTS(")");
                        break;
                }
+               case IS_REFERENCE:
+                       zend_print_flat_zval_r(Z_REFVAL_P(expr));
+                       break;
                default:
                        zend_print_variable(expr);
                        break;