RETURN_ZVAL(object->iterators[level].zobject, 1, 0);
} /* }}} */
+static union _zend_function *spl_recursive_it_get_method(zval **object_ptr, char *method, int method_len TSRMLS_DC)
+{
+ union _zend_function *function_handler;
+ spl_recursive_it_object *object = (spl_recursive_it_object*)zend_object_store_get_object(*object_ptr TSRMLS_CC);
+ long level = object->level;
+ zval *zobj = object->iterators[level].zobject;
+
+ function_handler = std_object_handlers.get_method(object_ptr, method, method_len TSRMLS_CC);
+ if (!function_handler) {
+ if (zend_hash_find(&Z_OBJCE_P(zobj)->function_table, method, method_len+1, (void **) &function_handler) == FAILURE) {
+ if (Z_OBJ_HT_P(zobj)->get_method) {
+ *object_ptr = zobj;
+ function_handler = Z_OBJ_HT_P(*object_ptr)->get_method(object_ptr, method, method_len TSRMLS_CC);
+ }
+ }
+ }
+ return function_handler;
+}
+
/* {{{ spl_RecursiveIteratorIterator_dtor */
static void spl_RecursiveIteratorIterator_free_storage(void *_object TSRMLS_DC)
{
REGISTER_SPL_ITERATOR(RecursiveIteratorIterator);
memcpy(&spl_handlers_rec_it_it, zend_get_std_object_handlers(), sizeof(zend_object_handlers));
+ spl_handlers_rec_it_it.get_method = spl_recursive_it_get_method;
spl_handlers_rec_it_it.clone_obj = NULL;
memcpy(&spl_handlers_dual_it, zend_get_std_object_handlers(), sizeof(zend_object_handlers));