diff options
author | Tjerk Meesters <datibbaw@php.net> | 2014-09-09 18:00:49 +0800 |
---|---|---|
committer | Tjerk Meesters <datibbaw@php.net> | 2014-09-09 18:00:49 +0800 |
commit | aca474fa1415a18c7068df50e9533ce8933cfb93 (patch) | |
tree | 3fe05cea2627557e989b578a272a7c27e583414d | |
parent | bdac08bcdd61181cdda43edad414fe9e205401ca (diff) | |
parent | 99f0760bfba86f45af9ea011a0f017080922710a (diff) | |
download | php-git-aca474fa1415a18c7068df50e9533ce8933cfb93.tar.gz |
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
Fixed #67985 - Incorrect last used array index copied to new array after unset
-rw-r--r-- | Zend/tests/bug67985.phpt | 16 | ||||
-rw-r--r-- | Zend/zend_variables.c | 1 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Zend/tests/bug67985.phpt b/Zend/tests/bug67985.phpt new file mode 100644 index 0000000000..6f032643f4 --- /dev/null +++ b/Zend/tests/bug67985.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #67985 - Last used array index not copied to new array at assignment +--FILE-- +<?php + +$a = ['zero', 'one', 'two']; +unset($a[2]); +$b = $a; +$a[] = 'three'; +$b[] = 'three'; + +var_dump($a === $b); + +?> +--EXPECT-- +bool(true) diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c index b875445120..9674de5246 100644 --- a/Zend/zend_variables.c +++ b/Zend/zend_variables.c @@ -136,6 +136,7 @@ ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC) ALLOC_HASHTABLE_REL(tmp_ht); zend_hash_init(tmp_ht, zend_hash_num_elements(original_ht), NULL, ZVAL_PTR_DTOR, 0); zend_hash_copy(tmp_ht, original_ht, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); + tmp_ht->nNextFreeElement = original_ht->nNextFreeElement; zvalue->value.ht = tmp_ht; } break; |