svn: /php/php-src/ branches/PHP_5_3/ext/spl/spl_fixedarray.c branches/PHP_5_4/ext/spl/spl_fixedarray.c trunk/ext/spl/spl_fixedarray.c
| From: | Felipe Pena | Date: | Sun, 05 Jun 2011 01:38:12 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/ext/spl/spl_fixedarray.c branches/PHP_5_4/ext/spl/spl_fixedarray.c trunk/ext/spl/spl_fixedarray.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-65115@lists.php.net to get a copy of this message | ||
felipe Sun, 05 Jun 2011 01:38:12 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=311817
Log:
- Possible fix for bug #54609 (Certain implementation(s) of SplFixedArray cause hard crash)
Bug: http://bugs.php.net/54609 (Open) Certain
implementation(s) of SplFixedArray cause hard crash
Changed paths:
U php/php-src/branches/PHP_5_3/ext/spl/spl_fixedarray.c
U php/php-src/branches/PHP_5_4/ext/spl/spl_fixedarray.c
U php/php-src/trunk/ext/spl/spl_fixedarray.c
Modified: php/php-src/branches/PHP_5_3/ext/spl/spl_fixedarray.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/spl/spl_fixedarray.c 2011-06-05 01:15:10 UTC (rev 311816)
+++ php/php-src/branches/PHP_5_3/ext/spl/spl_fixedarray.c 2011-06-05 01:38:12 UTC (rev 311817)
@@ -152,7 +152,7 @@
spl_fixedarray_object *intern = (spl_fixedarray_object*)zend_object_store_get_object(obj
TSRMLS_CC);
int i = 0;
- if (intern->array) {
+ if (intern->array && !GC_G(gc_active)) {
int j = zend_hash_num_elements(intern->std.properties);
for (i = 0; i < intern->array->size; i++) {
@@ -160,9 +160,6 @@
zend_hash_index_update(intern->std.properties, i, (void
*)&intern->array->elements[i], sizeof(zval *), NULL);
Z_ADDREF_P(intern->array->elements[i]);
} else {
- if (GC_G(gc_active)) {
- return NULL;
- }
zend_hash_index_update(intern->std.properties, i, (void *)&EG(uninitialized_zval_ptr),
sizeof(zval *), NULL);
Z_ADDREF_P(EG(uninitialized_zval_ptr));
}
Modified: php/php-src/branches/PHP_5_4/ext/spl/spl_fixedarray.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/spl/spl_fixedarray.c 2011-06-05 01:15:10 UTC (rev 311816)
+++ php/php-src/branches/PHP_5_4/ext/spl/spl_fixedarray.c 2011-06-05 01:38:12 UTC (rev 311817)
@@ -153,7 +153,7 @@
HashTable *ht = zend_std_get_properties(obj TSRMLS_CC);
int i = 0;
- if (intern->array) {
+ if (intern->array && !GC_G(gc_active)) {
int j = zend_hash_num_elements(ht);
for (i = 0; i < intern->array->size; i++) {
@@ -161,9 +161,6 @@
zend_hash_index_update(ht, i, (void *)&intern->array->elements[i], sizeof(zval *),
NULL);
Z_ADDREF_P(intern->array->elements[i]);
} else {
- if (GC_G(gc_active)) {
- return NULL;
- }
zend_hash_index_update(ht, i, (void *)&EG(uninitialized_zval_ptr), sizeof(zval *), NULL);
Z_ADDREF_P(EG(uninitialized_zval_ptr));
}
Modified: php/php-src/trunk/ext/spl/spl_fixedarray.c
===================================================================
--- php/php-src/trunk/ext/spl/spl_fixedarray.c 2011-06-05 01:15:10 UTC (rev 311816)
+++ php/php-src/trunk/ext/spl/spl_fixedarray.c 2011-06-05 01:38:12 UTC (rev 311817)
@@ -153,7 +153,7 @@
HashTable *ht = zend_std_get_properties(obj TSRMLS_CC);
int i = 0;
- if (intern->array) {
+ if (intern->array && !GC_G(gc_active)) {
int j = zend_hash_num_elements(ht);
for (i = 0; i < intern->array->size; i++) {
@@ -161,9 +161,6 @@
zend_hash_index_update(ht, i, (void *)&intern->array->elements[i], sizeof(zval *),
NULL);
Z_ADDREF_P(intern->array->elements[i]);
} else {
- if (GC_G(gc_active)) {
- return NULL;
- }
zend_hash_index_update(ht, i, (void *)&EG(uninitialized_zval_ptr), sizeof(zval *), NULL);
Z_ADDREF_P(EG(uninitialized_zval_ptr));
}