From e2c8ab7c33ac5328485c43db5080c5bf4911ce38 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Tue, 12 Jan 2021 10:26:17 +0100 Subject: [PATCH] Print "interned" instead of fake refcount in debug_zval_dump() debug_zval_dump() currently prints refcount 1 for interned strings and arrays, which does not really reflect the truth. These values are not refcounted, so the refcount is misleading. Instead print an "interned" tag. Closes GH-6598. --- ext/mbstring/tests/bug26639.phpt | 82 +++++++++--------- .../tests/mysqli_result_references.phpt | 6 +- .../mysqli_result_references_mysqlnd.phpt | 28 +++--- ext/standard/tests/array/bug24766.phpt | 14 +-- ext/standard/tests/array/bug25708.phpt | 40 ++++----- ext/standard/tests/array/bug26458.phpt | Bin 409 -> 389 bytes ext/standard/tests/array/bug72369.phpt | 2 +- ext/standard/tests/array/extract_safety.phpt | 10 +-- .../tests/array/extract_variation1.phpt | 12 +-- .../call_user_func_return.phpt | 14 +-- .../general_functions/debug_zval_dump_b.phpt | Bin 4300 -> 4250 bytes .../debug_zval_dump_b_64bit.phpt | Bin 4393 -> 4343 bytes .../general_functions/debug_zval_dump_o.phpt | 2 + .../general_functions/debug_zval_dump_v.phpt | 8 +- ext/standard/var.c | 13 ++- 15 files changed, 122 insertions(+), 109 deletions(-) diff --git a/ext/mbstring/tests/bug26639.phpt b/ext/mbstring/tests/bug26639.phpt index 3f5b8e5acdd..f50d8074826 100644 --- a/ext/mbstring/tests/bug26639.phpt +++ b/ext/mbstring/tests/bug26639.phpt @@ -7,16 +7,16 @@ Bug #26639 (mb_convert_variables() clutters variables beyond the references) $a = "あいうえお"; $b = $a; mb_convert_variables("EUC-JP", "Shift_JIS", $b); -debug_zval_dump($a); -debug_zval_dump($b); +var_dump($a); +var_dump($b); unset($a); unset($b); $a = "あいうえお"; $b = &$a; mb_convert_variables("EUC-JP", "Shift_JIS", $b); -debug_zval_dump($a); -debug_zval_dump($b); +var_dump($a); +var_dump($b); unset($a); unset($b); @@ -24,8 +24,8 @@ $a = " $b = array($a); $c = $b; mb_convert_variables("EUC-JP", "Shift_JIS", $c); -debug_zval_dump($b); -debug_zval_dump($c); +var_dump($b); +var_dump($c); unset($a); unset($b); unset($c); @@ -34,8 +34,8 @@ $a = " $b = array(&$a); $c = $b; mb_convert_variables("EUC-JP", "Shift_JIS", $c); -debug_zval_dump($b); -debug_zval_dump($c); +var_dump($b); +var_dump($c); unset($a); unset($b); unset($c); @@ -44,8 +44,8 @@ $a = " $b = array($a); $c = &$b; mb_convert_variables("EUC-JP", "Shift_JIS", $c); -debug_zval_dump($b); -debug_zval_dump($c); +var_dump($b); +var_dump($c); unset($a); unset($b); unset($c); @@ -54,8 +54,8 @@ $a = " $b = array(&$a); $c = &$b; mb_convert_variables("EUC-JP", "Shift_JIS", $c); -debug_zval_dump($b); -debug_zval_dump($c); +var_dump($b); +var_dump($c); unset($a); unset($b); unset($c); @@ -64,60 +64,60 @@ $a = array(array(" $b = $a; $c = $b; mb_convert_variables("EUC-JP", "Shift_JIS", $c); -debug_zval_dump($b); -debug_zval_dump($c); +var_dump($b); +var_dump($c); unset($a); unset($b); unset($c); ?> ---EXPECTF-- -string(10) "あいうえお" refcount(%d) -string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) -string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) -string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) -array(1) refcount(%d){ +--EXPECT-- +string(10) "あいうえお" +string(10) "、「、、、ヲ、ィ、ェ" +string(10) "、「、、、ヲ、ィ、ェ" +string(10) "、「、、、ヲ、ィ、ェ" +array(1) { [0]=> - string(10) "あいうえお" refcount(%d) + string(10) "あいうえお" } -array(1) refcount(%d){ +array(1) { [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) + string(10) "、「、、、ヲ、ィ、ェ" } -array(1) refcount(%d){ +array(1) { [0]=> - &string(10) "あいうえお" refcount(%d) + &string(10) "あいうえお" } -array(1) refcount(%d){ +array(1) { [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) + string(10) "、「、、、ヲ、ィ、ェ" } -array(1) refcount(%d){ +array(1) { [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) + string(10) "、「、、、ヲ、ィ、ェ" } -array(1) refcount(%d){ +array(1) { [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) + string(10) "、「、、、ヲ、ィ、ェ" } -array(1) refcount(%d){ +array(1) { [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) + string(10) "、「、、、ヲ、ィ、ェ" } -array(1) refcount(%d){ +array(1) { [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) + string(10) "、「、、、ヲ、ィ、ェ" } -array(1) refcount(%d){ +array(1) { [0]=> - array(1) refcount(%d){ + array(1) { [0]=> - string(10) "あいうえお" refcount(%d) + string(10) "あいうえお" } } -array(1) refcount(%d){ +array(1) { [0]=> - array(1) refcount(%d){ + array(1) { [0]=> - string(10) "、「、、、ヲ、ィ、ェ" refcount(%d) + string(10) "、「、、、ヲ、ィ、ェ" } } diff --git a/ext/mysqli/tests/mysqli_result_references.phpt b/ext/mysqli/tests/mysqli_result_references.phpt index 2e97cd45d79..c6b34896d84 100644 --- a/ext/mysqli/tests/mysqli_result_references.phpt +++ b/ext/mysqli/tests/mysqli_result_references.phpt @@ -5,6 +5,8 @@ References to result sets require_once('skipif.inc'); require_once('skipifconnectfailure.inc'); ?> +--INI-- +opcache.enable=0 --FILE-- array(2) refcount(1){ ["id"]=> - string(1) "1" refcount(%d) + string(1) "1" interned ["label"]=> - string(1) "a" refcount(%d) + string(1) "a" interned } } done! diff --git a/ext/mysqli/tests/mysqli_result_references_mysqlnd.phpt b/ext/mysqli/tests/mysqli_result_references_mysqlnd.phpt index 3c44f8a309e..bdd37c79f3c 100644 --- a/ext/mysqli/tests/mysqli_result_references_mysqlnd.phpt +++ b/ext/mysqli/tests/mysqli_result_references_mysqlnd.phpt @@ -59,14 +59,14 @@ array(1) refcount(%d){ ["row_copy"]=> array(2) refcount(1){ ["id"]=> - string(1) "1" refcount(%d) + string(1) "1" interned ["label"]=> - string(1) "a" refcount(%d) + string(1) "a" interned } ["id_ref"]=> - string(1) "1" refcount(%d) + string(1) "1" interned ["id_copy"]=> - string(1) "1" refcount(%d) + string(1) "1" interned } } array(2) refcount(%d){ @@ -77,35 +77,35 @@ array(2) refcount(%d){ ["row_copy"]=> array(2) refcount(%d){ ["id"]=> - string(1) "1" refcount(%d) + string(1) "1" interned ["label"]=> - string(1) "a" refcount(%d) + string(1) "a" interned } ["id_ref"]=> - string(1) "1" refcount(%d) + string(1) "1" interned ["id_copy"]=> - string(1) "1" refcount(%d) + string(1) "1" interned } [1]=> array(5) refcount(%d){ ["row_ref"]=> &array(2) refcount(%d){ ["id"]=> - &string(1) "2" refcount(%d) + &string(1) "2" interned ["label"]=> - string(1) "b" refcount(%d) + string(1) "b" interned } ["row_copy"]=> array(2) refcount(%d){ ["id"]=> - string(1) "2" refcount(%d) + string(1) "2" interned ["label"]=> - string(1) "b" refcount(%d) + string(1) "b" interned } ["id_ref"]=> - &string(1) "2" refcount(%d) + &string(1) "2" interned ["id_copy"]=> - string(1) "2" refcount(%d) + string(1) "2" interned ["id_copy_mod"]=> int(2) } diff --git a/ext/standard/tests/array/bug24766.phpt b/ext/standard/tests/array/bug24766.phpt index 2b5f8e0830e..ebe2f3928fd 100644 --- a/ext/standard/tests/array/bug24766.phpt +++ b/ext/standard/tests/array/bug24766.phpt @@ -7,35 +7,35 @@ error_reporting(E_ALL); $a = unpack('C2', "\0224V"); $b = array(1 => 18, 2 => 52); -debug_zval_dump($a, $b); +var_dump($a, $b); $k = array_keys($a); $l = array_keys($b); -debug_zval_dump($k, $l); +var_dump($k, $l); $i=$k[0]; var_dump($a[$i]); $i=$l[0]; var_dump($b[$i]); ?> ---EXPECTF-- -array(2) refcount(%d){ +--EXPECT-- +array(2) { [1]=> int(18) [2]=> int(52) } -array(2) refcount(%d){ +array(2) { [1]=> int(18) [2]=> int(52) } -array(2) refcount(%d){ +array(2) { [0]=> int(1) [1]=> int(2) } -array(2) refcount(%d){ +array(2) { [0]=> int(1) [1]=> diff --git a/ext/standard/tests/array/bug25708.phpt b/ext/standard/tests/array/bug25708.phpt index 0e695b69c97..89cb1f2dbf5 100644 --- a/ext/standard/tests/array/bug25708.phpt +++ b/ext/standard/tests/array/bug25708.phpt @@ -21,7 +21,7 @@ function foo($ref, $alt) { $b = NULL; } - debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); + var_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); echo "--\n"; if ($alt) { $a = &$GLOBALS['a']; @@ -29,25 +29,25 @@ function foo($ref, $alt) { } else { extract($GLOBALS, EXTR_REFS); } - debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); + var_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); echo "--\n"; $a = &$GLOBALS['a']; $b = &$GLOBALS['b']; - debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); + var_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); echo "--\n"; $GLOBALS['b'] = 3; - debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); + var_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); echo "--\n"; $a = 4; - debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); + var_dump($a, $b, $GLOBALS['a'], $GLOBALS['b']); echo "--\n"; $c = $b; - debug_zval_dump($b, $GLOBALS['b'], $c); + var_dump($b, $GLOBALS['b'], $c); echo "--\n"; $b = 'x'; - debug_zval_dump($a, $b, $GLOBALS['a'], $GLOBALS['b'], $c); + var_dump($a, $b, $GLOBALS['a'], $GLOBALS['b'], $c); echo "--\n"; - debug_zval_dump($org_a, $org_b); + var_dump($org_a, $org_b); echo "----"; if ($ref) echo 'r'; if ($alt) echo 'a'; @@ -64,9 +64,9 @@ foo(true, true); foo(false, false); foo(true, false); -debug_zval_dump($_a, $_b); +var_dump($_a, $_b); ?> ---EXPECTF-- +--EXPECT-- NULL NULL int(1) @@ -97,9 +97,9 @@ int(3) int(3) -- int(4) -string(1) "x" refcount(%d) +string(1) "x" int(4) -string(1) "x" refcount(%d) +string(1) "x" int(3) -- int(1) @@ -135,9 +135,9 @@ int(3) int(3) -- int(4) -string(1) "x" refcount(%d) +string(1) "x" int(4) -string(1) "x" refcount(%d) +string(1) "x" int(3) -- int(1) @@ -173,9 +173,9 @@ int(3) int(3) -- int(4) -string(1) "x" refcount(%d) +string(1) "x" int(4) -string(1) "x" refcount(%d) +string(1) "x" int(3) -- int(1) @@ -211,13 +211,13 @@ int(3) int(3) -- int(4) -string(1) "x" refcount(%d) +string(1) "x" int(4) -string(1) "x" refcount(%d) +string(1) "x" int(3) -- int(1) int(2) ----r -string(2) "ok" refcount(%d) -string(2) "ok" refcount(%d) +string(2) "ok" +string(2) "ok" diff --git a/ext/standard/tests/array/bug26458.phpt b/ext/standard/tests/array/bug26458.phpt index 455ab2b3453cc064510303560331842f3190244f..87c8b519bfd643cbaecbf5c279dd4136c77e06d2 100644 GIT binary patch delta 20 bcmbQq+{(Nml#xlbcyc16CaY>OS1lI+IH7z;6G_OQMHAQoBIHM*%vH({t7XS!`3~K-Y diff --git a/ext/standard/tests/array/bug72369.phpt b/ext/standard/tests/array/bug72369.phpt index 63bb5625dec..87d9aac357e 100644 --- a/ext/standard/tests/array/bug72369.phpt +++ b/ext/standard/tests/array/bug72369.phpt @@ -12,5 +12,5 @@ debug_zval_dump($a); --EXPECTF-- array(1) refcount(%d){ ["test"]=> - string(3) "xxx" refcount(%d) + string(3) "xxx" interned } diff --git a/ext/standard/tests/array/extract_safety.phpt b/ext/standard/tests/array/extract_safety.phpt index 393f2d77cab..a9200d25c4d 100644 --- a/ext/standard/tests/array/extract_safety.phpt +++ b/ext/standard/tests/array/extract_safety.phpt @@ -3,7 +3,7 @@ Test extract() for overwrite of GLOBALS --FILE-- "bar"); @@ -11,13 +11,13 @@ var_dump(extract(array("GLOBALS" => $splat, EXTR_OVERWRITE))); unset ($splat); -debug_zval_dump($GLOBALS["str"]); +var_dump($GLOBALS["str"]); echo "\nDone"; ?> ---EXPECTF-- -string(4) "John" refcount(%d) +--EXPECT-- +string(4) "John" int(1) -string(4) "John" refcount(%d) +string(4) "John" Done diff --git a/ext/standard/tests/array/extract_variation1.phpt b/ext/standard/tests/array/extract_variation1.phpt index a1f1faa3030..a629ae03608 100644 --- a/ext/standard/tests/array/extract_variation1.phpt +++ b/ext/standard/tests/array/extract_variation1.phpt @@ -6,21 +6,21 @@ Test extract() function (variation 1) $val = 4; $str = "John"; -debug_zval_dump($val); -debug_zval_dump($str); +var_dump($val); +var_dump($str); /* Extracting Global Variables */ var_dump(extract($GLOBALS, EXTR_REFS)); -debug_zval_dump($val); -debug_zval_dump($str); +var_dump($val); +var_dump($str); echo "\nDone"; ?> --EXPECTF-- int(4) -string(4) "John" refcount(%d) +string(4) "John" int(%d) int(4) -string(4) "John" refcount(%d) +string(4) "John" Done diff --git a/ext/standard/tests/general_functions/call_user_func_return.phpt b/ext/standard/tests/general_functions/call_user_func_return.phpt index 4719587ffc1..f4aaec13a5e 100644 --- a/ext/standard/tests/general_functions/call_user_func_return.phpt +++ b/ext/standard/tests/general_functions/call_user_func_return.phpt @@ -23,20 +23,20 @@ function & test2($arg1, $arg2) function test($func) { - debug_zval_dump($func('Direct', 'Call')); - debug_zval_dump(call_user_func_array($func, array('User', 'Func'))); + var_dump($func('Direct', 'Call')); + var_dump(call_user_func_array($func, array('User', 'Func'))); } test('test1'); test('test2'); ?> ---EXPECTF-- +--EXPECT-- Direct Call -string(5) "test1" refcount(%d) +string(5) "test1" User Func -string(5) "test1" refcount(%d) +string(5) "test1" Direct Call -string(5) "test2" refcount(%d) +string(5) "test2" User Func -string(5) "test2" refcount(%d) +string(5) "test2" diff --git a/ext/standard/tests/general_functions/debug_zval_dump_b.phpt b/ext/standard/tests/general_functions/debug_zval_dump_b.phpt index 5ce121b6a70f6030fc4e99e5e2788a2200c46566..0444ade190a520908d64514a64eb0a39ff48c14c 100644 GIT binary patch delta 250 zcmX@3I7@Ltpg?{>a$<5us$ObdVp2}3t-;0sR!)x0ypq(SywsG*iJXcEP9LWdg0lyi z^9q?G!G)yEjY}D!rxaOcF|y1hE)|3_CT=8-5w{CMriptxC(LaMlT~>RBBVa?AgOcW S-HDK4=aYqVHXHEGVFCcf3|V^s delta 282 zcmbQGct&wT;Kn2tPM)IFwB-EKyb=x76wS$boQkLd(>aw;1rDMMyhaxgw-j%2dZt}{a2yFhx HJBJAX?f+i3 diff --git a/ext/standard/tests/general_functions/debug_zval_dump_b_64bit.phpt b/ext/standard/tests/general_functions/debug_zval_dump_b_64bit.phpt index 6425249ca6fed1599e92f296f7900106d6b963ae..9302593cb2cad4789df4278bc9fb4c42ff0243d6 100644 GIT binary patch delta 273 zcmZ3f^j&enI)VIx-HtE1+JRZcB}JKe=^BQb3Q9>z3NS^Rd->)t0RTTTVG{rV delta 324 zcmeyaxKe4tx{do;IC+Xv(~|Q`^GY;SQ#2=^=2S!#_`<1#Dj>&&Cg6cCP=qcphf5jN zjN|AkKBB9T;Z{M_;(;zu!tH{p;sEz_RDlGZgQx