- Fixed bug #54970 (SplFixedArray::setSize() isn't resizing)

This commit is contained in:
Felipe Pena 2011-06-02 00:40:27 +00:00
parent f7cdabd118
commit 47315dfdf6
3 changed files with 41 additions and 0 deletions

1
NEWS
View File

@ -154,6 +154,7 @@ PHP NEWS
. Fixed bug #51958 (socket_accept() fails on IPv6 server sockets). (Gustavo)
- SPL extension:
. Fixed bug #54970 (SplFixedArray::setSize() isn't resizing). (Felipe)
. Fixed bug #54384 (Dual iterators, GlobIterator, SplFileObject and
SplTempFileObject crash when user-space classes don't call the paren
constructor). (Gustavo)

View File

@ -153,6 +153,8 @@ static HashTable* spl_fixedarray_object_get_properties(zval *obj TSRMLS_DC) /* {
int i = 0;
if (intern->array) {
int j = zend_hash_num_elements(intern->std.properties);
for (i = 0; i < intern->array->size; i++) {
if (intern->array->elements[i]) {
zend_hash_index_update(intern->std.properties, i, (void *)&intern->array->elements[i], sizeof(zval *), NULL);
@ -165,6 +167,11 @@ static HashTable* spl_fixedarray_object_get_properties(zval *obj TSRMLS_DC) /* {
Z_ADDREF_P(EG(uninitialized_zval_ptr));
}
}
if (j > intern->array->size) {
for (i = intern->array->size; i < j; ++i) {
zend_hash_index_del(intern->std.properties, i);
}
}
}
return intern->std.properties;

View File

@ -0,0 +1,33 @@
--TEST--
Bug #54970 (SplFixedArray::setSize() isn't resizing)
--FILE--
<?php
$fa = new SplFixedArray(2);
$fa[0] = 'Hello';
$fa[1] = 'World';
$fa->setSize(3);
$fa[2] = '!';
var_dump($fa);
$fa->setSize(2);
var_dump($fa);
var_dump($fa->getSize());
?>
--EXPECTF--
object(SplFixedArray)#%d (3) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "World"
[2]=>
string(1) "!"
}
object(SplFixedArray)#%d (2) {
[0]=>
string(5) "Hello"
[1]=>
string(5) "World"
}
int(2)