[PATCH v2 2/4] bisect--helper: release strbuf and strvec on run error
- From
René Scharfe <l.s.r@web.de>
- Date
- Jan 18, 2022, 12:46 UTC
- Message-ID
- <bdcd0e26-3ce9-d646-70e1-61ff7a4b6dbb@web.de>
- In-Reply-To
- <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>
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> --- builtin/bisect--helper.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-)
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) -- 2.34.1