summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Le Blanc <lbarnaud@php.net>2008-11-23 20:35:16 +0000
committerArnaud Le Blanc <lbarnaud@php.net>2008-11-23 20:35:16 +0000
commita23d168531fef70fe6a0fd1e90772b57f6a1a014 (patch)
tree8d53f947650c4bf56677649b2982c72627e2be09
parent65cfb01eaa951f03a2038a4679ddaeb6009d0de8 (diff)
downloadphp-git-a23d168531fef70fe6a0fd1e90772b57f6a1a014.tar.gz
MFH: Fixed bug #46649 (Setting array element with that same array produces
inconsistent results)
-rw-r--r--Zend/tests/bug38469.phpt26
-rw-r--r--Zend/zend_compile.c1
2 files changed, 27 insertions, 0 deletions
diff --git a/Zend/tests/bug38469.phpt b/Zend/tests/bug38469.phpt
index db507df357..6afcaf5fd3 100644
--- a/Zend/tests/bug38469.phpt
+++ b/Zend/tests/bug38469.phpt
@@ -8,6 +8,16 @@ var_dump($a);
$b = array(array());
$b[0][0] = $b;
var_dump($b);
+
+function f() {
+ $a = array();
+ $a[0] = $a;
+ var_dump($a);
+ $b = array(array());
+ $b[0][0] = $b;
+ var_dump($b);
+}
+f();
?>
--EXPECT--
array(1) {
@@ -26,3 +36,19 @@ array(1) {
}
}
}
+array(1) {
+ [0]=>
+ array(0) {
+ }
+}
+array(1) {
+ [0]=>
+ array(1) {
+ [0]=>
+ array(1) {
+ [0]=>
+ array(0) {
+ }
+ }
+ }
+}
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 358fc81552..c79e288f02 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -583,6 +583,7 @@ void zend_do_assign(znode *result, znode *variable, const znode *value TSRMLS_DC
CG(active_op_array)->vars[value->u.var].name,
CG(active_op_array)->vars[value->u.var].name_len, 1);
SET_UNUSED(opline->op2);
+ opline->op2.u.EA.type = ZEND_FETCH_LOCAL;
value = &opline->result;
}
}