Skip to content

Commit 3fd252e

Browse files
committed
Remove unnecessary zend_user_iterator use in spl_dllist_it
We don't make use of any functionality of zend_user_iterator, a plain zend_object_iterator will do.
1 parent 644710e commit 3fd252e

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

ext/spl/spl_dllist.c

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ struct _spl_dllist_object {
9191

9292
/* define an overloaded iterator structure */
9393
struct _spl_dllist_it {
94-
zend_user_iterator intern;
94+
zend_object_iterator intern;
9595
spl_ptr_llist_element *traverse_pointer;
9696
int traverse_position;
9797
int flags;
@@ -817,8 +817,7 @@ static void spl_dllist_it_dtor(zend_object_iterator *iter) /* {{{ */
817817

818818
SPL_LLIST_CHECK_DELREF(iterator->traverse_pointer);
819819

820-
zend_user_it_invalidate_current(iter);
821-
zval_ptr_dtor(&iterator->intern.it.data);
820+
zval_ptr_dtor(&iterator->intern.data);
822821
}
823822
/* }}} */
824823

@@ -917,8 +916,6 @@ static void spl_dllist_it_move_forward(zend_object_iterator *iter) /* {{{ */
917916
spl_dllist_it *iterator = (spl_dllist_it *)iter;
918917
spl_dllist_object *object = Z_SPLDLLIST_P(&iter->data);
919918

920-
zend_user_it_invalidate_current(iter);
921-
922919
spl_dllist_it_helper_move_forward(&iterator->traverse_pointer, &iterator->traverse_position, object->llist, iterator->flags);
923920
}
924921
/* }}} */
@@ -1237,29 +1234,26 @@ static const zend_object_iterator_funcs spl_dllist_it_funcs = {
12371234

12381235
zend_object_iterator *spl_dllist_get_iterator(zend_class_entry *ce, zval *object, int by_ref) /* {{{ */
12391236
{
1240-
spl_dllist_it *iterator;
12411237
spl_dllist_object *dllist_object = Z_SPLDLLIST_P(object);
12421238

12431239
if (by_ref) {
12441240
zend_throw_error(NULL, "An iterator cannot be used with foreach by reference");
12451241
return NULL;
12461242
}
12471243

1248-
iterator = emalloc(sizeof(spl_dllist_it));
1244+
spl_dllist_it *iterator = emalloc(sizeof(spl_dllist_it));
12491245

1250-
zend_iterator_init((zend_object_iterator*)iterator);
1246+
zend_iterator_init(&iterator->intern);
12511247

1252-
ZVAL_OBJ_COPY(&iterator->intern.it.data, Z_OBJ_P(object));
1253-
iterator->intern.it.funcs = &spl_dllist_it_funcs;
1254-
iterator->intern.ce = ce;
1248+
ZVAL_OBJ_COPY(&iterator->intern.data, Z_OBJ_P(object));
1249+
iterator->intern.funcs = &spl_dllist_it_funcs;
12551250
iterator->traverse_position = dllist_object->traverse_position;
12561251
iterator->traverse_pointer = dllist_object->traverse_pointer;
12571252
iterator->flags = dllist_object->flags & SPL_DLLIST_IT_MASK;
1258-
ZVAL_UNDEF(&iterator->intern.value);
12591253

12601254
SPL_LLIST_CHECK_ADDREF(iterator->traverse_pointer);
12611255

1262-
return &iterator->intern.it;
1256+
return &iterator->intern;
12631257
}
12641258
/* }}} */
12651259

0 commit comments

Comments
 (0)