branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
Signed-off-by: Glen Choo <chooglen@google.com> Reviewed-by: Jonathan Tan <jonathantanmy@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Glen Choo committed
Jan 28, 2022 at 16:04 UTC
679e3693aba0c17af60c031f7eef68f2296b8dad
1 file changed
+4
-3
branch.c
+4
-3
@@ -239,7 +239,7 @@ static void setup_tracking(const char *new_ref, const char *orig_ref,
239
if (track != BRANCH_TRACK_INHERIT)
240
for_each_remote(find_tracked_branch, &tracking);
241
else if (inherit_tracking(&tracking, orig_ref))
242
- return;
242
+ goto cleanup;
243
244
if (!tracking.matches)
245
switch (track) {
@@ -249,7 +249,7 @@ static void setup_tracking(const char *new_ref, const char *orig_ref,
249
case BRANCH_TRACK_INHERIT:
250
break;
251
default:
252
- return;
252
+ goto cleanup;
253
}
254
255
if (tracking.matches > 1)
@@ -262,7 +262,8 @@ static void setup_tracking(const char *new_ref, const char *orig_ref,
262
tracking.remote, tracking.srcs) < 0)
263
exit(-1);
264
265
- string_list_clear(tracking.srcs, 0);
265
+cleanup:
266
+ string_list_clear(&tracking_srcs, 0);
267
}
268
269
int read_branch_desc(struct strbuf *buf, const char *branch_name)