diff --git a/Zend/tests/ArrayAccess_indirect_append.phpt b/Zend/tests/ArrayAccess_indirect_append.phpt new file mode 100644 index 0000000000000..6f3da7c46ca8b --- /dev/null +++ b/Zend/tests/ArrayAccess_indirect_append.phpt @@ -0,0 +1,43 @@ +--TEST-- +Using indirect append on ArrayAccess object +--FILE-- +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 b6d74242ee4da..33c36850c06be 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 c66f8ad7c3f57..091a0a0d5382b 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);