pull: fix a "struct oid_array" memory leak
Fix a memory leak introduced in44c175c7a4
(pull: error on no merge candidates, 2015-06-18). As a result we can mark several tests as passing with SANITIZE=leak using "TEST_PASSES_SANITIZE_LEAK=true". Removing the "int ret = 0" assignment added here ina6d7eb2c7a
(pull: optionally rebase submodules (remote submodule changes only), 2017-06-23) is not a logic error, it could always have been left uninitialized (as "int ret"), now that we'll use the "ret" from the upper scope we can drop the assignment in the "opt_rebase" branch. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
27472b5195
commit
ece3974ba6
@ -990,6 +990,7 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
|
||||
int rebase_unspecified = 0;
|
||||
int can_ff;
|
||||
int divergent;
|
||||
int ret;
|
||||
|
||||
if (!getenv("GIT_REFLOG_ACTION"))
|
||||
set_reflog_message(argc, argv);
|
||||
@ -1100,7 +1101,8 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
|
||||
if (is_null_oid(&orig_head)) {
|
||||
if (merge_heads.nr > 1)
|
||||
die(_("Cannot merge multiple branches into empty head."));
|
||||
return pull_into_void(merge_heads.oid, &curr_head);
|
||||
ret = pull_into_void(merge_heads.oid, &curr_head);
|
||||
goto cleanup;
|
||||
}
|
||||
if (merge_heads.nr > 1) {
|
||||
if (opt_rebase)
|
||||
@ -1125,8 +1127,6 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
|
||||
if (opt_rebase) {
|
||||
int ret = 0;
|
||||
|
||||
struct object_id newbase;
|
||||
struct object_id upstream;
|
||||
get_rebase_newbase_and_upstream(&newbase, &upstream, &curr_head,
|
||||
@ -1149,12 +1149,16 @@ int cmd_pull(int argc, const char **argv, const char *prefix)
|
||||
recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND))
|
||||
ret = rebase_submodules();
|
||||
|
||||
return ret;
|
||||
goto cleanup;
|
||||
} else {
|
||||
int ret = run_merge();
|
||||
ret = run_merge();
|
||||
if (!ret && (recurse_submodules == RECURSE_SUBMODULES_ON ||
|
||||
recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND))
|
||||
ret = update_submodules();
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
cleanup:
|
||||
oid_array_clear(&merge_heads);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
test_description='git pull message generation'
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
dollar='$Dollar'
|
||||
|
@ -4,6 +4,7 @@ test_description='Merge-recursive ours and theirs variants'
|
||||
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
||||
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
||||
|
||||
TEST_PASSES_SANITIZE_LEAK=true
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success setup '
|
||||
|
@ -5,7 +5,6 @@
|
||||
|
||||
test_description='git svn property tests'
|
||||
|
||||
TEST_FAILS_SANITIZE_LEAK=true
|
||||
. ./lib-git-svn.sh
|
||||
|
||||
mkdir import
|
||||
|
Loading…
Reference in New Issue
Block a user