From: Xinchen Hui Date: Sun, 29 Jun 2014 13:54:39 +0000 (+0800) Subject: Fixed iterators X-Git-Tag: POST_PHPNG_MERGE~104 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7d492e3fd4b4964faa6155ad5335ac4689278476;p=php Fixed iterators --- diff --git a/ext/intl/breakiterator/breakiterator_iterators.cpp b/ext/intl/breakiterator/breakiterator_iterators.cpp index 0bfe6cfc2d..7783235d8d 100644 --- a/ext/intl/breakiterator/breakiterator_iterators.cpp +++ b/ext/intl/breakiterator/breakiterator_iterators.cpp @@ -217,7 +217,7 @@ void IntlIterator_from_BreakIterator_parts(zval *break_iter_zv, ii = Z_INTL_ITERATOR_P(object); ii->iterator = (zend_object_iterator*)emalloc(sizeof(zoi_break_iter_parts)); - //zend_iterator_init(ii->iterator TSRMLS_CC); + zend_iterator_init(ii->iterator TSRMLS_CC); ZVAL_COPY(&ii->iterator->data, break_iter_zv); ii->iterator->funcs = &breakiterator_parts_it_funcs; diff --git a/ext/intl/common/common_enum.cpp b/ext/intl/common/common_enum.cpp index e9d052d6ed..ff28bdb456 100644 --- a/ext/intl/common/common_enum.cpp +++ b/ext/intl/common/common_enum.cpp @@ -143,7 +143,7 @@ U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *ob object_init_ex(object, IntlIterator_ce_ptr); ii = Z_INTL_ITERATOR_P(object); ii->iterator = (zend_object_iterator*)emalloc(sizeof(zoi_with_current)); - //????????? dtor zend_iterator_init(ii->iterator TSRMLS_CC); + zend_iterator_init(ii->iterator TSRMLS_CC); ZVAL_PTR(&ii->iterator->data, se); ii->iterator->funcs = &string_enum_object_iterator_funcs; ii->iterator->index = 0; @@ -159,7 +159,7 @@ static void IntlIterator_objects_free(zend_object *object TSRMLS_DC) if (ii->iterator) { zval *wrapping_objp = &((zoi_with_current*)ii->iterator)->wrapping_obj; ZVAL_UNDEF(wrapping_objp); - ii->iterator->funcs->dtor(ii->iterator TSRMLS_CC); + zend_iterator_dtor(ii->iterator TSRMLS_CC); } intl_error_reset(INTLITERATOR_ERROR_P(ii) TSRMLS_CC); @@ -183,7 +183,7 @@ static zend_object_iterator *IntlIterator_get_iterator( return NULL; } - zval_add_ref(object); + ++GC_REFCOUNT(ii->iterator); return ii->iterator; }