@@ -91,7 +91,7 @@ struct _spl_dllist_object {
91
91
92
92
/* define an overloaded iterator structure */
93
93
struct _spl_dllist_it {
94
- zend_user_iterator intern ;
94
+ zend_object_iterator intern ;
95
95
spl_ptr_llist_element * traverse_pointer ;
96
96
int traverse_position ;
97
97
int flags ;
@@ -817,8 +817,7 @@ static void spl_dllist_it_dtor(zend_object_iterator *iter) /* {{{ */
817
817
818
818
SPL_LLIST_CHECK_DELREF (iterator -> traverse_pointer );
819
819
820
- zend_user_it_invalidate_current (iter );
821
- zval_ptr_dtor (& iterator -> intern .it .data );
820
+ zval_ptr_dtor (& iterator -> intern .data );
822
821
}
823
822
/* }}} */
824
823
@@ -917,8 +916,6 @@ static void spl_dllist_it_move_forward(zend_object_iterator *iter) /* {{{ */
917
916
spl_dllist_it * iterator = (spl_dllist_it * )iter ;
918
917
spl_dllist_object * object = Z_SPLDLLIST_P (& iter -> data );
919
918
920
- zend_user_it_invalidate_current (iter );
921
-
922
919
spl_dllist_it_helper_move_forward (& iterator -> traverse_pointer , & iterator -> traverse_position , object -> llist , iterator -> flags );
923
920
}
924
921
/* }}} */
@@ -1237,29 +1234,26 @@ static const zend_object_iterator_funcs spl_dllist_it_funcs = {
1237
1234
1238
1235
zend_object_iterator * spl_dllist_get_iterator (zend_class_entry * ce , zval * object , int by_ref ) /* {{{ */
1239
1236
{
1240
- spl_dllist_it * iterator ;
1241
1237
spl_dllist_object * dllist_object = Z_SPLDLLIST_P (object );
1242
1238
1243
1239
if (by_ref ) {
1244
1240
zend_throw_error (NULL , "An iterator cannot be used with foreach by reference" );
1245
1241
return NULL ;
1246
1242
}
1247
1243
1248
- iterator = emalloc (sizeof (spl_dllist_it ));
1244
+ spl_dllist_it * iterator = emalloc (sizeof (spl_dllist_it ));
1249
1245
1250
- zend_iterator_init (( zend_object_iterator * ) iterator );
1246
+ zend_iterator_init (& iterator -> intern );
1251
1247
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 ;
1255
1250
iterator -> traverse_position = dllist_object -> traverse_position ;
1256
1251
iterator -> traverse_pointer = dllist_object -> traverse_pointer ;
1257
1252
iterator -> flags = dllist_object -> flags & SPL_DLLIST_IT_MASK ;
1258
- ZVAL_UNDEF (& iterator -> intern .value );
1259
1253
1260
1254
SPL_LLIST_CHECK_ADDREF (iterator -> traverse_pointer );
1261
1255
1262
- return & iterator -> intern . it ;
1256
+ return & iterator -> intern ;
1263
1257
}
1264
1258
/* }}} */
1265
1259
0 commit comments