submodule: fix leaking submodule ODB paths
In `add_submodule_odb_by_path()` we add a path into a global string list. The list is initialized with `NODUP`, which means that we do not pass ownership of strings to the list. But we use `xstrdup()` when we insert a path, with the consequence that the string will never get free'd. Plug the leak by marking the list as `DUP`. There is only a single callsite where we insert paths anyway, and as explained above that callsite was mishandling the allocation. This leak is exposed by t7814, but plugging it does not make the whole test suite pass. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
64d9adafba
commit
f8d2ca7246
|
@ -175,11 +175,11 @@ void stage_updated_gitmodules(struct index_state *istate)
|
|||
die(_("staging updated .gitmodules failed"));
|
||||
}
|
||||
|
||||
static struct string_list added_submodule_odb_paths = STRING_LIST_INIT_NODUP;
|
||||
static struct string_list added_submodule_odb_paths = STRING_LIST_INIT_DUP;
|
||||
|
||||
void add_submodule_odb_by_path(const char *path)
|
||||
{
|
||||
string_list_insert(&added_submodule_odb_paths, xstrdup(path));
|
||||
string_list_insert(&added_submodule_odb_paths, path);
|
||||
}
|
||||
|
||||
int register_all_submodule_odb_as_alternates(void)
|
||||
|
|
Loading…
Reference in New Issue