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>
This commit is contained in:

committed by
Junio C Hamano

parent
0c1c3c861e
commit
520cf66814
@ -470,7 +470,7 @@ test_expect_success 'expect def_params during shell alias expansion' '
|
|||||||
grep "d1|main|def_param|.*|ENV_PROP_FOO:blue" actual
|
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_when_finished "rm prop.perf actual" &&
|
||||||
|
|
||||||
test_config_global "trace2.configParams" "cfg.prop.*" &&
|
test_config_global "trace2.configParams" "cfg.prop.*" &&
|
||||||
|
12
trace2.c
12
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)
|
void trace2_cmd_list_config_fl(const char *file, int line)
|
||||||
{
|
{
|
||||||
|
static int emitted = 0;
|
||||||
|
|
||||||
if (!trace2_enabled)
|
if (!trace2_enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (emitted)
|
||||||
|
return;
|
||||||
|
emitted = 1;
|
||||||
|
|
||||||
tr2_cfg_list_config_fl(file, line);
|
tr2_cfg_list_config_fl(file, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
void trace2_cmd_list_env_vars_fl(const char *file, int line)
|
void trace2_cmd_list_env_vars_fl(const char *file, int line)
|
||||||
{
|
{
|
||||||
|
static int emitted = 0;
|
||||||
|
|
||||||
if (!trace2_enabled)
|
if (!trace2_enabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (emitted)
|
||||||
|
return;
|
||||||
|
emitted = 1;
|
||||||
|
|
||||||
tr2_list_env_vars_fl(file, line);
|
tr2_list_env_vars_fl(file, line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user