summaryrefslogtreecommitdiff
path: root/merge-recursive.c
diff options
context:
space:
mode:
authorMartin Ågren <martin.agren@gmail.com>2018-02-28 19:07:56 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-02-28 19:15:51 (GMT)
commit51d3f43d2fd7f93cd19494eef4aef712fad597c2 (patch)
tree915f5c117a9654ccc5b6dfabe47b036cacab910d /merge-recursive.c
parent6481652432eed5b073428411763d5b5d712b6745 (diff)
downloadgit-51d3f43d2fd7f93cd19494eef4aef712fad597c2.zip
git-51d3f43d2fd7f93cd19494eef4aef712fad597c2.tar.gz
git-51d3f43d2fd7f93cd19494eef4aef712fad597c2.tar.bz2
merge-recursive: always roll back lock in `merge_recursive_generic()`
If we return early, or if `active_cache_changed` is false, we forget to roll back the lockfile. Signed-off-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r--merge-recursive.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/merge-recursive.c b/merge-recursive.c
index 6ff971f..1295779 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -2218,12 +2218,15 @@ int merge_recursive_generic(struct merge_options *o,
hold_locked_index(&lock, LOCK_DIE_ON_ERROR);
clean = merge_recursive(o, head_commit, next_commit, ca,
result);
- if (clean < 0)
+ if (clean < 0) {
+ rollback_lock_file(&lock);
return clean;
+ }
if (active_cache_changed &&
write_locked_index(&the_index, &lock, COMMIT_LOCK))
return err(o, _("Unable to write index."));
+ rollback_lock_file(&lock);
return clean ? 0 : 1;
}