bisect--helper: release strbuf and strvec on run error

Move the cleanup code out of the loop and make sure all execution paths
pass through it to avoid leaking memory.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2022-01-18 13:46:15 +01:00 committed by Junio C Hamano
parent 80c2e9657f
commit 8efa2acc2e

View File

@ -1116,8 +1116,7 @@ static int bisect_run(struct bisect_terms *terms, const char **argv, int argc)
if (res < 0 || 128 <= res) {
error(_("bisect run failed: exit code %d from"
" '%s' is < 0 or >= 128"), res, command.buf);
strbuf_release(&command);
return res;
break;
}
if (res == 125)
@ -1129,8 +1128,10 @@ static int bisect_run(struct bisect_terms *terms, const char **argv, int argc)
temporary_stdout_fd = open(git_path_bisect_run(), O_CREAT | O_WRONLY | O_TRUNC, 0666);
if (temporary_stdout_fd < 0)
return error_errno(_("cannot open file '%s' for writing"), git_path_bisect_run());
if (temporary_stdout_fd < 0) {
res = error_errno(_("cannot open file '%s' for writing"), git_path_bisect_run());
break;
}
fflush(stdout);
saved_stdout = dup(1);
@ -1159,11 +1160,12 @@ static int bisect_run(struct bisect_terms *terms, const char **argv, int argc)
} else {
continue;
}
strbuf_release(&command);
strvec_clear(&run_args);
return res;
break;
}
strbuf_release(&command);
strvec_clear(&run_args);
return res;
}
int cmd_bisect__helper(int argc, const char **argv, const char *prefix)