From 2dc39eec89ebbf676eacd8ac373c9657f3abe5af Mon Sep 17 00:00:00 2001 From: twosee Date: Sun, 12 Jul 2020 01:15:00 +0800 Subject: [PATCH] debug_zval_dump(): Don't skip recursion detection on first level A complement to ae6f45ad45e072260d93f828d81fee9548123044 --- ext/standard/var.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/ext/standard/var.c b/ext/standard/var.c index f289f75ab96b9..17540f56cd3b2 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -304,14 +304,12 @@ PHPAPI void php_debug_zval_dump(zval *struc, int level) /* {{{ */ case IS_ARRAY: myht = Z_ARRVAL_P(struc); if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) { - if (level > 1) { - if (GC_IS_RECURSIVE(myht)) { - PUTS("*RECURSION*\n"); - return; - } - GC_PROTECT_RECURSION(myht); + if (GC_IS_RECURSIVE(myht)) { + PUTS("*RECURSION*\n"); + return; } GC_ADDREF(myht); + GC_PROTECT_RECURSION(myht); } count = zend_array_count(myht); php_printf("%sarray(%d) refcount(%u){\n", COMMON, count, Z_REFCOUNTED_P(struc) ? Z_REFCOUNT_P(struc) - 1 : 1); @@ -319,9 +317,7 @@ PHPAPI void php_debug_zval_dump(zval *struc, int level) /* {{{ */ zval_array_element_dump(val, index, key, level); } ZEND_HASH_FOREACH_END(); if (!(GC_FLAGS(myht) & GC_IMMUTABLE)) { - if (level > 1) { - GC_UNPROTECT_RECURSION(myht); - } + GC_UNPROTECT_RECURSION(myht); GC_DELREF(myht); } if (level > 1) {