Browse Source

Fixed #67985 - Incorrect last used array index copied to new array after unset

In master zend_array_dup() is used to do this properly; this is a workaround.
pull/827/head
Tjerk Meesters 12 years ago
parent
commit
99f0760bfb
  1. 4
      NEWS
  2. 16
      Zend/tests/bug67985.phpt
  3. 1
      Zend/zend_variables.c

4
NEWS

@ -2,6 +2,10 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2014, PHP 5.4.34
- Core:
. Fixed bug #67985 (Incorrect last used array index copied to new array after
unset). (Tjerk)
?? ??? 2014, PHP 5.4.33
- Core:

16
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)

1
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;

Loading…
Cancel
Save