diff options
author | Dmitry Stogov <dmitry@zend.com> | 2017-10-06 01:34:50 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2017-10-06 01:34:50 +0300 |
commit | cb9d81ef4f07f82835273800b0cb3d6a67816050 (patch) | |
tree | dad640422674e3eb45a2577f5b29fcd7ad9c8676 /ext/spl | |
parent | 39ea632f7468e1001b15b9c43afc6aba9debdc9c (diff) | |
download | php-git-cb9d81ef4f07f82835273800b0cb3d6a67816050.tar.gz |
Refactored recursion pretection
Diffstat (limited to 'ext/spl')
-rw-r--r-- | ext/spl/spl_observer.c | 11 |
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; |