com php-src: Merge branch 'PHP-5.6': ext/spl/spl_observer.c
| From: | Xinchen Hui | Date: | Sat, 14 Mar 2015 03:32:09 +0000 |
| Subject: | com php-src: Merge branch 'PHP-5.6': ext/spl/spl_observer.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-85512@lists.php.net to get a copy of this message | ||
Commit: 9420a2a5b0079ddc9ff6db31f7ebcf3e869a0717
Author: Xinchen Hui <laruence@php.net> Sat, 14 Mar 2015 11:32:09 +0800
Parents: e78971cd7bd53b0d18dacedd88f3daaae9aa592f 96bb3b838c5cbeafa1328c65fbe33be1c340572b
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=9420a2a5b0079ddc9ff6db31f7ebcf3e869a0717
Log:
Merge branch 'PHP-5.6'
Changed paths:
MM ext/spl/spl_observer.c
Diff:
diff --cc ext/spl/spl_observer.c
index 14a0bad,cf86636...619ed38
--- a/ext/spl/spl_observer.c
+++ b/ext/spl/spl_observer.c
@@@ -357,21 -367,24 +357,21 @@@ static HashTable* spl_object_storage_de
/* }}} */
/* overriden for garbage collection */
-static HashTable *spl_object_storage_get_gc(zval *obj, zval ***table, int *n TSRMLS_DC) /* {{{ */
+static HashTable *spl_object_storage_get_gc(zval *obj, zval **table, int *n) /* {{{ */
{
- long i = 0;
- spl_SplObjectStorage *intern = (spl_SplObjectStorage*)zend_object_store_get_object(obj
TSRMLS_CC);
+ int i = 0;
+ spl_SplObjectStorage *intern = Z_SPLOBJSTORAGE_P(obj);
spl_SplObjectStorageElement *element;
- HashPosition pos;
- if (intern->storage.nNumOfElements > intern->gcdata_num) {
+ if (intern->storage.nNumOfElements * 2 > intern->gcdata_num) {
intern->gcdata_num = intern->storage.nNumOfElements * 2;
- intern->gcdata = (zval**)erealloc(intern->gcdata, sizeof(zval*) * intern->gcdata_num);
+ intern->gcdata = (zval*)erealloc(intern->gcdata, sizeof(zval) * intern->gcdata_num);
}
- zend_hash_internal_pointer_reset_ex(&intern->storage, &pos);
- while (zend_hash_get_current_data_ex(&intern->storage, (void **)&element, &pos) ==
SUCCESS) {
- intern->gcdata[i++] = element->obj;
- intern->gcdata[i++] = element->inf;
- zend_hash_move_forward_ex(&intern->storage, &pos);
- }
+ ZEND_HASH_FOREACH_PTR(&intern->storage, element) {
+ ZVAL_COPY_VALUE(&intern->gcdata[i++], &element->obj);
+ ZVAL_COPY_VALUE(&intern->gcdata[i++], &element->inf);
+ } ZEND_HASH_FOREACH_END();
*table = intern->gcdata;
*n = i;