]> git.ipfire.org Git - thirdparty/git.git/commitdiff
trace2: avoid emitting 'def_param' set more than once
authorJeff Hostetler <jeffhostetler@github.com>
Thu, 7 Mar 2024 15:22:28 +0000 (15:22 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 7 Mar 2024 18:24:34 +0000 (10:24 -0800)
During nested alias expansion it is possible for
"trace2_cmd_list_config()" and "trace2_cmd_list_env_vars()"
to be called more than once.  This causes a full set of
'def_param' events to be emitted each time.  Let's avoid
that.

Add code to those two functions to only emit them once.

Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0211-trace2-perf.sh
trace2.c

index 588c5bad03344c2697d420c8167c708fc19b3357..7b353195396f43364c29fafc545c8db2f1dbb030 100755 (executable)
@@ -470,7 +470,7 @@ test_expect_success 'expect def_params during shell alias expansion' '
        grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
 '
 
-test_expect_failure 'expect def_params during nested git alias expansion' '
+test_expect_success 'expect def_params during nested git alias expansion' '
        test_when_finished "rm prop.perf actual" &&
 
        test_config_global "trace2.configParams" "cfg.prop.*" &&
index f1e268bd159ecb3d491721e67c34eabd397a66ea..facce641ef3a7c477222bec578f16654924e28c9 100644 (file)
--- a/trace2.c
+++ b/trace2.c
@@ -464,17 +464,29 @@ void trace2_cmd_alias_fl(const char *file, int line, const char *alias,
 
 void trace2_cmd_list_config_fl(const char *file, int line)
 {
+       static int emitted = 0;
+
        if (!trace2_enabled)
                return;
 
+       if (emitted)
+               return;
+       emitted = 1;
+
        tr2_cfg_list_config_fl(file, line);
 }
 
 void trace2_cmd_list_env_vars_fl(const char *file, int line)
 {
+       static int emitted = 0;
+
        if (!trace2_enabled)
                return;
 
+       if (emitted)
+               return;
+       emitted = 1;
+
        tr2_list_env_vars_fl(file, line);
 }