Commit e8d373c4feb9cddc9cc2e50e2f486bc7ef6bcf9c

Etiene Dalcol 2017-11-11T17:39:25

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,