diff mbox

[v2,00/12] Fix all leaks in tests t0002-t0099: Part 2

Message ID 20210725130830.5145-1-andrzej@ahunt.org (mailing list archive)
State New, archived
Headers show

Commit Message

Andrzej Hunt July 25, 2021, 1:08 p.m. UTC
From: Andrzej Hunt <ajrhunt@google.com>

V2 fixes patch 11/12 (rebase_options.strategy lifecycle) as per review
discussion. Many thanks to Phillip and Elijah for spotting the issues there!

ATB,

  Andrzej

Andrzej Hunt (12):
  fmt-merge-msg: free newly allocated temporary strings when done
  environment: move strbuf into block to plug leak
  builtin/submodule--helper: release unused strbuf to avoid leak
  builtin/for-each-repo: remove unnecessary argv copy to plug leak
  diffcore-rename: move old_dir/new_dir definition to plug leak
  ref-filter: also free head for ATOM_HEAD to avoid leak
  read-cache: call diff_setup_done to avoid leak
  convert: release strbuf to avoid leak
  builtin/mv: free or UNLEAK multiple pointers at end of cmd_mv
  builtin/merge: free found_ref when done
  builtin/rebase: fix options.strategy memory lifecycle
  reset: clear_unpack_trees_porcelain to plug leak

 builtin/for-each-repo.c     | 14 ++++----------
 builtin/merge.c             |  3 ++-
 builtin/mv.c                |  5 +++++
 builtin/rebase.c            |  3 ++-
 builtin/submodule--helper.c |  6 ++++--
 convert.c                   |  2 ++
 diffcore-rename.c           | 10 +++++++---
 environment.c               |  7 +++----
 fmt-merge-msg.c             |  6 ++++--
 read-cache.c                |  1 +
 ref-filter.c                |  8 ++++++--
 reset.c                     |  4 ++--
 12 files changed, 42 insertions(+), 27 deletions(-)

Interdiff against v1:

Comments

Junio C Hamano July 26, 2021, 8:20 p.m. UTC | #1
andrzej@ahunt.org writes:

> From: Andrzej Hunt <ajrhunt@google.com>
>
> V2 fixes patch 11/12 (rebase_options.strategy lifecycle) as per review
> discussion. Many thanks to Phillip and Elijah for spotting the issues there!

Thanks.  Looking good.

Will queue.
diff mbox

Patch

diff --git a/builtin/rebase.c b/builtin/rebase.c
index 9d81db0f3a..33e0961900 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1723,6 +1723,7 @@  int cmd_rebase(int argc, const char **argv, const char *prefix)
 	}
 
 	if (options.strategy) {
+		options.strategy = xstrdup(options.strategy);
 		switch (options.type) {
 		case REBASE_APPLY:
 			die(_("--strategy requires --merge or --interactive"));
@@ -1775,7 +1776,7 @@  int cmd_rebase(int argc, const char **argv, const char *prefix)
 	if (options.type == REBASE_MERGE &&
 	    !options.strategy &&
 	    getenv("GIT_TEST_MERGE_ALGORITHM"))
-		options.strategy = getenv("GIT_TEST_MERGE_ALGORITHM");
+		options.strategy = xstrdup(getenv("GIT_TEST_MERGE_ALGORITHM"));
 
 	switch (options.type) {
 	case REBASE_MERGE:
@@ -2108,6 +2109,7 @@  int cmd_rebase(int argc, const char **argv, const char *prefix)
 	free(options.head_name);
 	free(options.gpg_sign_opt);
 	free(options.cmd);
+	free(options.strategy);
 	strbuf_release(&options.git_format_patch_opt);
 	free(squash_onto_name);
 	return ret;