builtin/merge: fix leaking struct cmdnames in get_strategy()
In "builtin/merge.c" we use the helper infrastructure to figure out what merge strategies there are. We never free contents of the `cmdnames` structures though and thus leak their memory. Fix this by exposing the already existing `clean_cmdnames()` function to release their memory. As this name isn't quite idiomatic, rename it to `cmdnames_release()` while at it. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
6e95f4ee03
commit
77241a6b5e
12
help.c
12
help.c
@@ -157,7 +157,7 @@ void add_cmdname(struct cmdnames *cmds, const char *name, int len)
|
||||
cmds->names[cmds->cnt++] = ent;
|
||||
}
|
||||
|
||||
static void clean_cmdnames(struct cmdnames *cmds)
|
||||
void cmdnames_release(struct cmdnames *cmds)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < cmds->cnt; ++i)
|
||||
@@ -359,8 +359,8 @@ void list_all_main_cmds(struct string_list *list)
|
||||
for (i = 0; i < main_cmds.cnt; i++)
|
||||
string_list_append(list, main_cmds.names[i]->name);
|
||||
|
||||
clean_cmdnames(&main_cmds);
|
||||
clean_cmdnames(&other_cmds);
|
||||
cmdnames_release(&main_cmds);
|
||||
cmdnames_release(&other_cmds);
|
||||
}
|
||||
|
||||
void list_all_other_cmds(struct string_list *list)
|
||||
@@ -375,8 +375,8 @@ void list_all_other_cmds(struct string_list *list)
|
||||
for (i = 0; i < other_cmds.cnt; i++)
|
||||
string_list_append(list, other_cmds.names[i]->name);
|
||||
|
||||
clean_cmdnames(&main_cmds);
|
||||
clean_cmdnames(&other_cmds);
|
||||
cmdnames_release(&main_cmds);
|
||||
cmdnames_release(&other_cmds);
|
||||
}
|
||||
|
||||
void list_cmds_by_category(struct string_list *list,
|
||||
@@ -689,7 +689,7 @@ const char *help_unknown_cmd(const char *cmd)
|
||||
if (autocorrect && n == 1 && SIMILAR_ENOUGH(best_similarity)) {
|
||||
const char *assumed = main_cmds.names[0]->name;
|
||||
main_cmds.names[0] = NULL;
|
||||
clean_cmdnames(&main_cmds);
|
||||
cmdnames_release(&main_cmds);
|
||||
fprintf_ln(stderr,
|
||||
_("WARNING: You called a Git command named '%s', "
|
||||
"which does not exist."),
|
||||
|
||||
Reference in New Issue
Block a user