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
}