summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorNikita Popov <nikic@php.net>2016-03-20 12:58:58 +0100
committerNikita Popov <nikic@php.net>2016-03-20 13:33:17 +0100
commit1f6d27d3d2cf8a5113946a55a297441bb4c70ddf (patch)
treeeb8ff12b858104b9970600ae37e0aac6275aded2 /Zend
parent9564998e490092fdefa6630944e38692c75e30de (diff)
downloadphp-git-1f6d27d3d2cf8a5113946a55a297441bb4c70ddf.tar.gz
Fix use of UNDEF instead of NULL in read_dimension
Diffstat (limited to 'Zend')
-rw-r--r--Zend/tests/ArrayAccess_indirect_append.phpt43
-rw-r--r--Zend/tests/bug69955.phpt2
-rw-r--r--Zend/zend_object_handlers.c2
3 files changed, 44 insertions, 3 deletions
diff --git a/Zend/tests/ArrayAccess_indirect_append.phpt b/Zend/tests/ArrayAccess_indirect_append.phpt
new file mode 100644
index 0000000000..6f3da7c46c
--- /dev/null
+++ b/Zend/tests/ArrayAccess_indirect_append.phpt
@@ -0,0 +1,43 @@
+--TEST--
+Using indirect append on ArrayAccess object
+--FILE--
+<?php
+
+class AA implements ArrayAccess {
+ private $data = [];
+ public function &offsetGet($name) {
+ if (null === $name) {
+ return $this->data[];
+ } else {
+ return $this->data[$name];
+ }
+ }
+ public function offsetSet($name, $value) {
+ $this->data[$name] = $value;
+ }
+ public function offsetUnset($name) {}
+ public function offsetExists($name) {}
+}
+
+$aa = new AA;
+$aa[3] = 1;
+$aa[][][0] = 2;
+var_dump($aa);
+
+?>
+--EXPECT--
+object(AA)#1 (1) {
+ ["data":"AA":private]=>
+ array(2) {
+ [3]=>
+ int(1)
+ [4]=>
+ array(1) {
+ [0]=>
+ array(1) {
+ [0]=>
+ int(2)
+ }
+ }
+ }
+}
diff --git a/Zend/tests/bug69955.phpt b/Zend/tests/bug69955.phpt
index b6d74242ee..33c36850c0 100644
--- a/Zend/tests/bug69955.phpt
+++ b/Zend/tests/bug69955.phpt
@@ -27,8 +27,6 @@ $c10 = new C10;
var_dump($c10[] += 5);
--EXPECTF--
Inside C10::offsetGet
-
-Notice: Undefined variable: offset in %sbug69955.php on line 10
NULL
Inside C10::offsetSet
diff --git a/Zend/zend_object_handlers.c b/Zend/zend_object_handlers.c
index c66f8ad7c3..091a0a0d53 100644
--- a/Zend/zend_object_handlers.c
+++ b/Zend/zend_object_handlers.c
@@ -712,7 +712,7 @@ zval *zend_std_read_dimension(zval *object, zval *offset, int type, zval *rv) /*
if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
if(offset == NULL) {
/* [] construct */
- ZVAL_UNDEF(&tmp);
+ ZVAL_NULL(&tmp);
offset = &tmp;
} else {
SEPARATE_ARG_IF_REF(offset);