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>

Martin Ågren committed Feb 28, 2018 at 20:07 UTC 51d3f43d2fd7f93cd19494eef4aef712fad597c2
1 file changed +4 -1
merge-recursive.c
+4 -1
@@ -2218,12 +2218,15 @@ int merge_recursive_generic(struct merge_options *o,
2218 hold_locked_index(&lock, LOCK_DIE_ON_ERROR);
2219 clean = merge_recursive(o, head_commit, next_commit, ca,
2220 result);
2221 - if (clean < 0)
2221 + if (clean < 0) {
2222 + rollback_lock_file(&lock);
2223 return clean;
2224 + }
2225
2226 if (active_cache_changed &&
2227 write_locked_index(&the_index, &lock, COMMIT_LOCK))
2228 return err(o, _("Unable to write index."));
2229 + rollback_lock_file(&lock);
2230
2231 return clean ? 0 : 1;
2232 }