From 495551aa8c3d66ee16ab91c1fb97329f10c0632c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 26 Feb 2014 15:01:08 +0400 Subject: Fixed iterators API. zend_iterator_init() has to be used in each get_iterator() callback. --- Zend/zend_iterators.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'Zend/zend_iterators.c') diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c index 7610aadfc8..5514c8bba8 100644 --- a/Zend/zend_iterators.c +++ b/Zend/zend_iterators.c @@ -65,11 +65,10 @@ static void iter_wrapper_dtor(zend_object *object TSRMLS_DC) iter->funcs->dtor(iter TSRMLS_CC); } -ZEND_API void zend_iterator_wrap(zend_object_iterator *iter, zval *wrapped TSRMLS_DC) +ZEND_API void zend_iterator_init(zend_object_iterator *iter TSRMLS_DC) { - ZVAL_OBJ(wrapped, &iter->std); - //??? hack (it would be better implement it in anothe way) - Z_OBJ_HT_P(wrapped) = &iterator_object_handlers; + zend_object_std_init(&iter->std, &zend_iterator_class_entry); + iter->std.handlers = &iterator_object_handlers; } ZEND_API enum zend_object_iterator_kind zend_iterator_unwrap( -- cgit v1.2.1