merge: add error handling for index reload Cleans up should git_repository_index or git_index_read fail
diff --git a/src/merge.c b/src/merge.c
index e9616a9..5eb9884 100644
--- a/src/merge.c
+++ b/src/merge.c
@@ -3239,9 +3239,6 @@ int git_merge(
assert(repo && their_heads);
- git_repository_index(&index, repo);
- git_index_read(index, 0);
-
if (their_heads_len != 1) {
giterr_set(GITERR_MERGE, "can only merge a single branch");
return -1;
@@ -3258,6 +3255,10 @@ int git_merge(
&checkout_strategy)) < 0)
goto done;
+ if ((error = git_repository_index(&index, repo) < 0) ||
+ (error = git_index_read(index, 0) < 0))
+ goto done;
+
/* Write the merge setup files to the repository. */
if ((error = git_annotated_commit_from_head(&our_head, repo)) < 0 ||
(error = git_merge__setup(repo, our_head, their_heads,