]> granicus.if.org Git - php/commitdiff
Fixed iterators
authorXinchen Hui <laruence@php.net>
Sun, 29 Jun 2014 13:54:39 +0000 (21:54 +0800)
committerXinchen Hui <laruence@php.net>
Sun, 29 Jun 2014 13:54:39 +0000 (21:54 +0800)
ext/intl/breakiterator/breakiterator_iterators.cpp
ext/intl/common/common_enum.cpp

index 0bfe6cfc2d5824137aeb6e79b390aeb9af48f65a..7783235d8d59c39e313f304e554169e8e49b328d 100644 (file)
@@ -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;
index e9d052d6ed75c2661bf7dae49a4c5b20ff3df7fa..ff28bdb4563d02730b5629bc6fda648edea6c68b 100644 (file)
@@ -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;
 }