]> granicus.if.org Git - php/commitdiff
Fixed COUNT_RECURSIVE reference handling
authorXinchen Hui <laruence@gmail.com>
Mon, 17 Mar 2014 14:04:54 +0000 (22:04 +0800)
committerXinchen Hui <laruence@gmail.com>
Mon, 17 Mar 2014 14:04:54 +0000 (22:04 +0800)
ext/standard/array.c

index cbcfecc8958e4a479dcd667089aa10889f9f07f0..ce0fcad5abe4152ad6e7c9babd651dda08ac308d 100644 (file)
@@ -288,6 +288,9 @@ static int php_count_recursive(zval *array, long mode TSRMLS_DC) /* {{{ */
                                zend_hash_move_forward_ex(Z_ARRVAL_P(array), &pos)
                        ) {
                                Z_ARRVAL_P(array)->nApplyCount++;
+                               if (Z_TYPE_P(element) == IS_REFERENCE) {
+                                       element = Z_REFVAL_P(element);
+                               }
                                cnt += php_count_recursive(element, COUNT_RECURSIVE TSRMLS_CC);
                                Z_ARRVAL_P(array)->nApplyCount--;
                        }