diff mbox series

[v2,2/4] bisect--helper: release strbuf and strvec on run error

Message ID bdcd0e26-3ce9-d646-70e1-61ff7a4b6dbb@web.de (mailing list archive)
State New, archived
Headers show
Series bisect: report actual bisect_state() argument on error | expand

Commit Message

René Scharfe Jan. 18, 2022, 12:46 p.m. UTC
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(-)

--
2.34.1
diff mbox series

Patch

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)