diff options
author | Nikita Popov <nikic@php.net> | 2016-03-20 12:58:58 +0100 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2016-03-20 13:33:17 +0100 |
commit | 1f6d27d3d2cf8a5113946a55a297441bb4c70ddf (patch) | |
tree | eb8ff12b858104b9970600ae37e0aac6275aded2 /Zend | |
parent | 9564998e490092fdefa6630944e38692c75e30de (diff) | |
download | php-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.phpt | 43 | ||||
-rw-r--r-- | Zend/tests/bug69955.phpt | 2 | ||||
-rw-r--r-- | Zend/zend_object_handlers.c | 2 |
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); |