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:
parent
80c2e9657f
commit
8efa2acc2e
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user