summaryrefslogtreecommitdiff
path: root/Zend/zend_iterators.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-09-16 01:34:27 +0400
committerDmitry Stogov <dmitry@zend.com>2014-09-16 01:34:27 +0400
commit69917807939170c5a5e0ec6da1c7f9dd9633c6ae (patch)
tree7e7fd01fe3561c82f9aa2e4bc9355a17d33e6c0a /Zend/zend_iterators.c
parenta7bfd006bd40354ac598d820becaceb6331c60c9 (diff)
downloadphp-git-69917807939170c5a5e0ec6da1c7f9dd9633c6ae.tar.gz
Optimized FE_RESET and FE_FETCH
Diffstat (limited to 'Zend/zend_iterators.c')
-rw-r--r--Zend/zend_iterators.c26
1 files changed, 5 insertions, 21 deletions
diff --git a/Zend/zend_iterators.c b/Zend/zend_iterators.c
index 7c08ac59b5..c2f51c4dd6 100644
--- a/Zend/zend_iterators.c
+++ b/Zend/zend_iterators.c
@@ -84,29 +84,13 @@ ZEND_API void zend_iterator_dtor(zend_object_iterator *iter TSRMLS_DC)
zend_objects_store_del(&iter->std TSRMLS_CC);
}
-ZEND_API enum zend_object_iterator_kind zend_iterator_unwrap(
- zval *array_ptr, zend_object_iterator **iter TSRMLS_DC)
+ZEND_API zend_object_iterator* zend_iterator_unwrap(zval *array_ptr TSRMLS_DC)
{
- switch (Z_TYPE_P(array_ptr)) {
- case IS_OBJECT:
- if (Z_OBJ_HT_P(array_ptr) == &iterator_object_handlers) {
- *iter = (zend_object_iterator *)Z_OBJ_P(array_ptr);
- return ZEND_ITER_OBJECT;
- }
- if (Z_OBJPROP_P(array_ptr)) {
- return ZEND_ITER_PLAIN_OBJECT;
- }
- return ZEND_ITER_INVALID;
-
- case IS_ARRAY:
- if (Z_ARRVAL_P(array_ptr)) {
- return ZEND_ITER_PLAIN_ARRAY;
- }
- return ZEND_ITER_INVALID;
-
- default:
- return ZEND_ITER_INVALID;
+ if (Z_TYPE_P(array_ptr) &&
+ Z_OBJ_HT_P(array_ptr) == &iterator_object_handlers) {
+ return (zend_object_iterator *)Z_OBJ_P(array_ptr);
}
+ return NULL;
}
/*