Skip to content

Commit 54352a6

Browse files
committed
Fix RecursiveIteratorIterator
1 parent 3bfa497 commit 54352a6

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

ext/spl/spl_iterators.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ static void spl_recursive_it_get_current_data(zend_object_iterator *iter, zval *
145145
spl_recursive_it_object *object = (spl_recursive_it_object*)iter->data;
146146
zend_object_iterator *sub_iter = object->iterators[object->level].iterator;
147147

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);
149149
}
150150

151151
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)
346346
if (iterator->funcs->get_current_key(iterator, &str_key, &str_key_len, &int_key TSRMLS_CC) == HASH_KEY_IS_LONG) {
347347
RETURN_LONG(int_key);
348348
} else {
349-
RETURN_STRINGL(str_key, str_key_len, 1);
349+
RETURN_STRINGL(str_key, str_key_len-1, 0);
350350
}
351351
} else {
352352
RETURN_NULL();
@@ -360,8 +360,7 @@ SPL_METHOD(RecursiveIteratorIterator, current)
360360
zval **data;
361361

362362
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);
365364
}
366365

367366
SPL_METHOD(RecursiveIteratorIterator, next)

0 commit comments

Comments
 (0)