@@ -2070,23 +2070,13 @@ PHP_METHOD(RecursiveRegexIterator, accept)
2070
2070
zend_call_method_with_0_params (Z_OBJ_P (ZEND_THIS ), spl_ce_RegexIterator , NULL , "accept" , return_value );
2071
2071
}
2072
2072
2073
- /* {{{ spl_dual_it_dtor */
2074
- static void spl_dual_it_dtor (zend_object * _object )
2075
- {
2076
- spl_dual_it_object * object = spl_dual_it_from_obj (_object );
2077
-
2078
- /* call standard dtor */
2079
- zend_objects_destroy_object (_object );
2080
-
2081
- spl_dual_it_free (object );
2082
- }
2083
- /* }}} */
2084
-
2085
2073
/* {{{ spl_dual_it_free_storage */
2086
2074
static void spl_dual_it_free_storage (zend_object * _object )
2087
2075
{
2088
2076
spl_dual_it_object * object = spl_dual_it_from_obj (_object );
2089
2077
2078
+ spl_dual_it_free (object );
2079
+
2090
2080
if (object -> inner .iterator ) {
2091
2081
zend_iterator_dtor (object -> inner .iterator );
2092
2082
}
@@ -2147,9 +2137,9 @@ static HashTable *spl_dual_it_get_gc(zend_object *obj, zval **table, int *n)
2147
2137
}
2148
2138
}
2149
2139
2150
- if (! Z_ISUNDEF ( object -> inner . zobject )) {
2151
- zend_get_gc_buffer_add_zval (gc_buffer , & object -> inner . zobject );
2152
- }
2140
+ zend_get_gc_buffer_add_zval ( gc_buffer , & object -> current . data );
2141
+ zend_get_gc_buffer_add_zval (gc_buffer , & object -> current . key );
2142
+ zend_get_gc_buffer_add_zval ( gc_buffer , & object -> inner . zobject );
2153
2143
2154
2144
switch (object -> dit_type ) {
2155
2145
case DIT_Unknown :
@@ -2171,6 +2161,8 @@ static HashTable *spl_dual_it_get_gc(zend_object *obj, zval **table, int *n)
2171
2161
case DIT_CachingIterator :
2172
2162
case DIT_RecursiveCachingIterator :
2173
2163
zend_get_gc_buffer_add_zval (gc_buffer , & object -> u .caching .zcache );
2164
+ zend_get_gc_buffer_add_zval (gc_buffer , & object -> u .caching .zstr );
2165
+ zend_get_gc_buffer_add_zval (gc_buffer , & object -> u .caching .zchildren );
2174
2166
break ;
2175
2167
case DIT_CallbackFilterIterator :
2176
2168
case DIT_RecursiveCallbackFilterIterator :
@@ -3259,7 +3251,6 @@ PHP_MINIT_FUNCTION(spl_iterators)
3259
3251
spl_handlers_dual_it .offset = XtOffsetOf (spl_dual_it_object , std );
3260
3252
spl_handlers_dual_it .get_method = spl_dual_it_get_method ;
3261
3253
spl_handlers_dual_it .clone_obj = NULL ;
3262
- spl_handlers_dual_it .dtor_obj = spl_dual_it_dtor ;
3263
3254
spl_handlers_dual_it .free_obj = spl_dual_it_free_storage ;
3264
3255
spl_handlers_dual_it .get_gc = spl_dual_it_get_gc ;
3265
3256
0 commit comments