trace2: avoid emitting 'def_param' set more than once
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>
Jeff Hostetler committed
Mar 7, 2024 at 15:22 UTC
520cf668149d43820a25869dc5f2eb7ff2ac5687
2 files changed
+13
-1
t/t0211-trace2-perf.sh
+1
-1
@@ -470,7 +470,7 @@ test_expect_success 'expect def_params during shell alias expansion' '
470
grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
471
'
472
473
-test_expect_failure 'expect def_params during nested git alias expansion' '
473
+test_expect_success 'expect def_params during nested git alias expansion' '
474
test_when_finished "rm prop.perf actual" &&
475
476
test_config_global "trace2.configParams" "cfg.prop.*" &&
trace2.c
+12
@@ -464,17 +464,29 @@ void trace2_cmd_alias_fl(const char *file, int line, const char *alias,
464
465
void trace2_cmd_list_config_fl(const char *file, int line)
466
{
467
+ static int emitted = 0;
468
+
469
if (!trace2_enabled)
470
return;
471
472
+ if (emitted)
473
+ return;
474
+ emitted = 1;
475
+
476
tr2_cfg_list_config_fl(file, line);
477
}
478
479
void trace2_cmd_list_env_vars_fl(const char *file, int line)
480
{
481
+ static int emitted = 0;
482
+
483
if (!trace2_enabled)
484
return;
485
486
+ if (emitted)
487
+ return;
488
+ emitted = 1;
489
+
490
tr2_list_env_vars_fl(file, line);
491
}
492