branch: fix a leak in setup_tracking
Inbdaf1dfae7
(branch: new autosetupmerge option "simple" for matching branches, 2022-04-29) a new exit for setup_tracking() missed the clean-up, producing a leak. $ git config branch.autoSetupMerge simple $ git remote add local . $ git update-ref refs/remotes/local/foo HEAD $ git branch bar local/foo Direct leak of 384 byte(s) in 1 object(s) allocated from: ... in xrealloc wrapper.c ... in string_list_append_nodup string-list.c ... in find_tracked_branch branch.c ... in for_each_remote remote.c ... in setup_tracking branch.c ... in create_branch branch.c ... in cmd_branch builtinbranch.c ... in run_builtin git.c Indirect leak of 24 byte(s) in 1 object(s) allocated from: ... in xrealloc wrapper.c ... in strbuf_grow strbuf.c ... in strbuf_add strbuf.c ... in match_name_with_pattern remote.c ... in query_refspecs remote.c ... in remote_find_tracking remote.c ... in find_tracked_branch branch.c ... in for_each_remote remote.c ... in setup_tracking branch.c ... in create_branch branch.c ... in cmd_branch builtinbranch.c ... in run_builtin git.c The return introduced inbdaf1dfae7
was to avoid setting up the tracking, but even in that case it is still necessary to do the clean-up. Let's do it. Signed-off-by: Rubén Justo <rjusto@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
05e717d556
commit
5ace483a15
2
branch.c
2
branch.c
@ -333,7 +333,7 @@ static void setup_tracking(const char *new_ref, const char *orig_ref,
|
|||||||
if (!skip_prefix(tracking.srcs->items[0].string,
|
if (!skip_prefix(tracking.srcs->items[0].string,
|
||||||
"refs/heads/", &tracked_branch) ||
|
"refs/heads/", &tracked_branch) ||
|
||||||
strcmp(tracked_branch, new_ref))
|
strcmp(tracked_branch, new_ref))
|
||||||
return;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tracking.srcs->nr < 1)
|
if (tracking.srcs->nr < 1)
|
||||||
|
Reference in New Issue
Block a user