summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Boerger <helly@php.net>2003-11-17 00:57:01 +0000
committerMarcus Boerger <helly@php.net>2003-11-17 00:57:01 +0000
commit54352a63ad955060cc114d16f855595067b83ea3 (patch)
treefc14afbf551b8f8ea8e60d95e0961f9fd05a8737
parent3bfa4972548cba4d5c0508a257bba6a95db5866b (diff)
downloadphp-git-54352a63ad955060cc114d16f855595067b83ea3.tar.gz
Fix RecursiveIteratorIterator
-rwxr-xr-xext/spl/spl_iterators.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/ext/spl/spl_iterators.c b/ext/spl/spl_iterators.c
index 718e993e97..4b72bcfc4a 100755
--- a/ext/spl/spl_iterators.c
+++ b/ext/spl/spl_iterators.c
@@ -145,7 +145,7 @@ static void spl_recursive_it_get_current_data(zend_object_iterator *iter, zval *
spl_recursive_it_object *object = (spl_recursive_it_object*)iter->data;
zend_object_iterator *sub_iter = object->iterators[object->level].iterator;
- return sub_iter->funcs->get_current_data(sub_iter, data TSRMLS_CC);
+ sub_iter->funcs->get_current_data(sub_iter, data TSRMLS_CC);
}
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)
if (iterator->funcs->get_current_key(iterator, &str_key, &str_key_len, &int_key TSRMLS_CC) == HASH_KEY_IS_LONG) {
RETURN_LONG(int_key);
} else {
- RETURN_STRINGL(str_key, str_key_len, 1);
+ RETURN_STRINGL(str_key, str_key_len-1, 0);
}
} else {
RETURN_NULL();
@@ -360,8 +360,7 @@ SPL_METHOD(RecursiveIteratorIterator, current)
zval **data;
iterator->funcs->get_current_data(iterator, &data TSRMLS_CC);
- *return_value = **data;
- return_value->refcount++;
+ REPLACE_ZVAL_VALUE(&return_value, *data, 1);
}
SPL_METHOD(RecursiveIteratorIterator, next)