iterator->funcs->get_current_data(iterator, &data TSRMLS_CC);
zend_replace_error_handling(EH_THROW, spl_ce_UnexpectedValueException, &error_handling TSRMLS_CC);
-
- RETVAL_ZVAL(*data, 1, 0);
+ if (data && *data) {
+ RETVAL_ZVAL(*data, 1, 0);
+ }
if (Z_TYPE_P(return_value) == IS_ARRAY) {
zval_dtor(return_value);
ZVAL_STRINGL(return_value, "Array", sizeof("Array")-1, 1);
zval **data;
iterator->funcs->get_current_data(iterator, &data TSRMLS_CC);
- RETURN_ZVAL(*data, 1, 0);
+ if (data && *data) {
+ RETURN_ZVAL(*data, 1, 0);
+ } else {
+ RETURN_NULL();
+ }
}
spl_recursive_tree_iterator_get_entry(object, &entry TSRMLS_CC);
intern = (spl_dual_it_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
intern->inner.iterator->funcs->get_current_data(intern->inner.iterator, &data TSRMLS_CC);
- RETURN_ZVAL(*data, 1, 0);
+ if (data && *data) {
+ RETURN_ZVAL(*data, 1, 0);
+ }
} /* }}} */
/* {{{ proto void NoRewindIterator::next() U
if (EG(exception)) {
return ZEND_HASH_APPLY_STOP;
}
+ if (data == NULL || *data == NULL) {
+ return ZEND_HASH_APPLY_STOP;
+ }
if (iter->funcs->get_current_key) {
key_type = iter->funcs->get_current_key(iter, &str_key, &str_key_len, &int_key TSRMLS_CC);
if (EG(exception)) {
if (EG(exception)) {
return ZEND_HASH_APPLY_STOP;
}
+ if (data == NULL || *data == NULL) {
+ return ZEND_HASH_APPLY_STOP;
+ }
Z_ADDREF_PP(data);
add_next_index_zval(return_value, *data);
return ZEND_HASH_APPLY_KEEP;