diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2014-02-26 15:01:08 +0400 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2014-02-26 15:01:08 +0400 |
| commit | 495551aa8c3d66ee16ab91c1fb97329f10c0632c (patch) | |
| tree | 19f39597305afd611b7a6788964f7f14ff120208 /ext/spl | |
| parent | a4a86df3c0c47362a6932585a447f87dc9823451 (diff) | |
| download | php-git-495551aa8c3d66ee16ab91c1fb97329f10c0632c.tar.gz | |
Fixed iterators API. zend_iterator_init() has to be used in each get_iterator() callback.
Diffstat (limited to 'ext/spl')
| -rw-r--r-- | ext/spl/spl_array.c | 2 | ||||
| -rw-r--r-- | ext/spl/spl_dllist.c | 3 | ||||
| -rw-r--r-- | ext/spl/spl_fixedarray.c | 3 | ||||
| -rw-r--r-- | ext/spl/spl_heap.c | 6 | ||||
| -rw-r--r-- | ext/spl/spl_iterators.c | 2 |
5 files changed, 16 insertions, 0 deletions
diff --git a/ext/spl/spl_array.c b/ext/spl/spl_array.c index e272a145e5..e552ca8fb4 100644 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@ -1148,6 +1148,8 @@ zend_object_iterator *spl_array_get_iterator(zend_class_entry *ce, zval *object, iterator = emalloc(sizeof(spl_array_it)); + zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC); + Z_ADDREF_P(object); iterator->intern.it.data = (void*)object; iterator->intern.it.funcs = &spl_array_it_funcs; diff --git a/ext/spl/spl_dllist.c b/ext/spl/spl_dllist.c index fbe249456e..99863626bc 100644 --- a/ext/spl/spl_dllist.c +++ b/ext/spl/spl_dllist.c @@ -1291,6 +1291,9 @@ zend_object_iterator *spl_dllist_get_iterator(zend_class_entry *ce, zval *object Z_ADDREF_P(object); iterator = emalloc(sizeof(spl_dllist_it)); + + zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC); + iterator->intern.it.data = (void*)object; iterator->intern.it.funcs = &spl_dllist_it_funcs; iterator->intern.ce = ce; diff --git a/ext/spl/spl_fixedarray.c b/ext/spl/spl_fixedarray.c index 075df9b2b7..9e5e8b590c 100644 --- a/ext/spl/spl_fixedarray.c +++ b/ext/spl/spl_fixedarray.c @@ -1052,6 +1052,9 @@ zend_object_iterator *spl_fixedarray_get_iterator(zend_class_entry *ce, zval *ob Z_ADDREF_P(object); iterator = emalloc(sizeof(spl_fixedarray_it)); + + zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC); + iterator->intern.it.data = object; iterator->intern.it.funcs = &spl_fixedarray_it_funcs; iterator->intern.ce = ce; diff --git a/ext/spl/spl_heap.c b/ext/spl/spl_heap.c index 9159000799..2afee6cd49 100644 --- a/ext/spl/spl_heap.c +++ b/ext/spl/spl_heap.c @@ -1091,6 +1091,9 @@ zend_object_iterator *spl_heap_get_iterator(zend_class_entry *ce, zval *object, Z_ADDREF_P(object); iterator = emalloc(sizeof(spl_heap_it)); + + zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC); + iterator->intern.it.data = (void*)object; iterator->intern.it.funcs = &spl_heap_it_funcs; iterator->intern.ce = ce; @@ -1115,6 +1118,9 @@ zend_object_iterator *spl_pqueue_get_iterator(zend_class_entry *ce, zval *object Z_ADDREF_P(object); iterator = emalloc(sizeof(spl_heap_it)); + + zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC); + iterator->intern.it.data = (void*)object; iterator->intern.it.funcs = &spl_pqueue_it_funcs; iterator->intern.ce = ce; diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c index 81d1ecc4bc..2891f3ce9b 100644 --- a/ext/spl/spl_iterators.c +++ b/ext/spl/spl_iterators.c @@ -423,6 +423,8 @@ static zend_object_iterator *spl_recursive_it_get_iterator(zend_class_entry *ce, "the parent constructor has not been called"); } + zend_iterator_init((zend_object_iterator*)iterator TSRMLS_CC); + Z_ADDREF_P(zobject); iterator->intern.data = (void*)object; iterator->intern.funcs = ce->iterator_funcs.funcs; |
