summaryrefslogtreecommitdiff
path: root/ext/spl
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-10-06 01:34:50 +0300
committerDmitry Stogov <dmitry@zend.com>2017-10-06 01:34:50 +0300
commitcb9d81ef4f07f82835273800b0cb3d6a67816050 (patch)
treedad640422674e3eb45a2577f5b29fcd7ad9c8676 /ext/spl
parent39ea632f7468e1001b15b9c43afc6aba9debdc9c (diff)
downloadphp-git-cb9d81ef4f07f82835273800b0cb3d6a67816050.tar.gz
Refactored recursion pretection
Diffstat (limited to 'ext/spl')
-rw-r--r--ext/spl/spl_observer.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/ext/spl/spl_observer.c b/ext/spl/spl_observer.c
index c6d366515b..e9dc418b53 100644
--- a/ext/spl/spl_observer.c
+++ b/ext/spl/spl_observer.c
@@ -569,12 +569,13 @@ SPL_METHOD(SplObjectStorage, count)
}
if (mode == COUNT_RECURSIVE) {
- zend_long ret = zend_hash_num_elements(&intern->storage);
- zval *element;
+ zend_long ret;
- ZEND_HASH_FOREACH_VAL(&intern->storage, element) {
- ret += php_count_recursive(element, mode);
- } ZEND_HASH_FOREACH_END();
+ if (mode != COUNT_RECURSIVE) {
+ ret = zend_hash_num_elements(&intern->storage);
+ } else {
+ ret = php_count_recursive(&intern->storage);
+ }
RETURN_LONG(ret);
return;