@@ -2550,10 +2550,11 @@ static int update_submodule(struct update_data *update_data,
int *must_die_on_failure)
{
int ret;
+ char *to_free, *restore = update_data->displaypath;
ensure_core_worktree(update_data->sm_path);
- update_data->displaypath = get_submodule_displaypath(
+ update_data->displaypath = to_free = get_submodule_displaypath(
update_data->sm_path, update_data->prefix);
determine_submodule_update_strategy(the_repository, update_data->just_cloned,
@@ -2627,6 +2628,9 @@ static int update_submodule(struct update_data *update_data,
ret = 0;
cleanup:
+ free(to_free);
+ update_data->displaypath = restore;
+
return ret;
}
Fix a leak in code added in c51f8f94e5b (submodule--helper: run update procedures from C, 2021-08-24), we clobber the "displaypath" member of the passed-in "struct update_data" both so that die() messages in this update_submodule() function itself can use it, and for the run_update_procedure() called within this function. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- builtin/submodule--helper.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)