@@ -145,7 +145,7 @@ static void spl_recursive_it_get_current_data(zend_object_iterator *iter, zval *
145
145
spl_recursive_it_object * object = (spl_recursive_it_object * )iter -> data ;
146
146
zend_object_iterator * sub_iter = object -> iterators [object -> level ].iterator ;
147
147
148
- return sub_iter -> funcs -> get_current_data (sub_iter , data TSRMLS_CC );
148
+ sub_iter -> funcs -> get_current_data (sub_iter , data TSRMLS_CC );
149
149
}
150
150
151
151
static int spl_recursive_it_get_current_key (zend_object_iterator * iter , char * * str_key , uint * str_key_len , ulong * int_key TSRMLS_DC )
@@ -346,7 +346,7 @@ SPL_METHOD(RecursiveIteratorIterator, key)
346
346
if (iterator -> funcs -> get_current_key (iterator , & str_key , & str_key_len , & int_key TSRMLS_CC ) == HASH_KEY_IS_LONG ) {
347
347
RETURN_LONG (int_key );
348
348
} else {
349
- RETURN_STRINGL (str_key , str_key_len , 1 );
349
+ RETURN_STRINGL (str_key , str_key_len - 1 , 0 );
350
350
}
351
351
} else {
352
352
RETURN_NULL ();
@@ -360,8 +360,7 @@ SPL_METHOD(RecursiveIteratorIterator, current)
360
360
zval * * data ;
361
361
362
362
iterator -> funcs -> get_current_data (iterator , & data TSRMLS_CC );
363
- * return_value = * * data ;
364
- return_value -> refcount ++ ;
363
+ REPLACE_ZVAL_VALUE (& return_value , * data , 1 );
365
364
}
366
365
367
366
SPL_METHOD (RecursiveIteratorIterator , next )
0 commit comments