From: René Scharfe Date: Tue, 18 Jan 2022 12:46:15 +0000 (+0100) Subject: bisect--helper: release strbuf and strvec on run error X-Git-Tag: v2.36.0-rc0~99^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8efa2acc2ed667eb7d80a533ace59f4722088c8b;p=thirdparty%2Fgit.git 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 Signed-off-by: Junio C Hamano --- diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c index 1dbc6294ef..e529665d9f 100644 --- a/builtin/bisect--helper.c +++ b/builtin/bisect--helper.c @@ -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)