summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2016-08-23 12:14:31 +0300
committerDmitry Stogov <dmitry@zend.com>2016-08-23 12:14:31 +0300
commit62ab40bc9642798a9af0435ef3284a4f5d9bf6d4 (patch)
tree51c45e72b3539680499d5b0b8a8b43729eec6f1f
parent0cc8ff2b41d2d22bce59d394e2ab268c4c9c0086 (diff)
downloadphp-git-62ab40bc9642798a9af0435ef3284a4f5d9bf6d4.tar.gz
Added tests and NEWS entry
Fixed bug #72598 (Reference is lost after array_slice())
-rw-r--r--NEWS3
-rw-r--r--Zend/tests/bug72598.phpt26
-rw-r--r--Zend/tests/bug72598_2.phpt27
3 files changed, 56 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 31eded8861..ca0f198f94 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2016, PHP 7.1.0RC1
+- Core:
+ . Fixed bug #72598 (Reference is lost after array_slice()) (Nikita)
+
-GD:
. Fixed bug #66005 (imagecopy does not support 1bit transparency on truecolor
images). (cmb)
diff --git a/Zend/tests/bug72598.phpt b/Zend/tests/bug72598.phpt
new file mode 100644
index 0000000000..dfb09a05b8
--- /dev/null
+++ b/Zend/tests/bug72598.phpt
@@ -0,0 +1,26 @@
+--TEST--
+Bug #72598 (Reference is lost after array_slice())
+--FILE--
+<?php
+function ref(&$ref) {
+ var_dump($ref);
+}
+
+new class {
+ function __construct() {
+ $args = [&$this];
+ for ($i = 0; $i < 2; $i++) {
+ $a = array_slice($args, 0, 1);
+ call_user_func_array('ref', $a);
+ }
+ }
+};
+?>
+--EXPECTF--
+Warning: Parameter 1 to ref() expected to be a reference, value given in %sbug72598.php on line 11
+object(class@anonymous)#1 (0) {
+}
+
+Warning: Parameter 1 to ref() expected to be a reference, value given in %sbug72598.php on line 11
+object(class@anonymous)#1 (0) {
+}
diff --git a/Zend/tests/bug72598_2.phpt b/Zend/tests/bug72598_2.phpt
new file mode 100644
index 0000000000..c3943806ff
--- /dev/null
+++ b/Zend/tests/bug72598_2.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Bug #72598.2 (Reference is lost after array_slice())
+--FILE--
+<?php
+function ref(&$ref) {
+ var_dump($ref);
+ $ref = 1;
+}
+
+new class {
+ function __construct() {
+ $b = 0;
+ $args = [&$b];
+ unset($b);
+ for ($i = 0; $i < 2; $i++) {
+ $a = array_slice($args, 0, 1);
+ call_user_func_array('ref', $a);
+ }
+ }
+};
+?>
+--EXPECTF--
+Warning: Parameter 1 to ref() expected to be a reference, value given in %sbug72598_2.php on line 14
+int(0)
+
+Warning: Parameter 1 to ref() expected to be a reference, value given in %sbug72598_2.php on line 14
+int(0)