submodule--helper: fix a leak in module_add()

Fix a leak in module_path(), since a6226fd772b (submodule--helper: convert the bulk of cmd_add() to C, 2021-08-10), we've been freeing add_data.sm_path, but in this case we clobbered it, and didn't free the value we clobbered. This makes test 28 of "t/t7400-submodule-basic.sh" ("submodule add in subdirectory") pass when we're compiled with SANITIZE=leak.. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Reviewed-by: Glen Choo <chooglen@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ævar Arnfjörð Bjarmason committed Sep 1, 2022 at 01:14 UTC 623bd7d154daf93e910414bfc8b3080c7269f2a6
1 file changed +6 -2
builtin/submodule--helper.c
+6 -2
@@ -3314,8 +3314,12 @@ static int module_add(int argc, const char **argv, const char *prefix)
3314 else
3315 add_data.sm_path = xstrdup(argv[1]);
3316
3317 - if (prefix && *prefix && !is_absolute_path(add_data.sm_path))
3318 - add_data.sm_path = xstrfmt("%s%s", prefix, add_data.sm_path);
3317 + if (prefix && *prefix && !is_absolute_path(add_data.sm_path)) {
3318 + char *sm_path = add_data.sm_path;
3319 +
3320 + add_data.sm_path = xstrfmt("%s%s", prefix, sm_path);
3321 + free(sm_path);
3322 + }
3323
3324 if (starts_with_dot_dot_slash(add_data.repo) ||
3325 starts_with_dot_slash(add_data.repo)) {