summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtiene Dalcol <dalcol@etiene.net>2017-11-11 17:39:25 +0000
committerEtiene Dalcol <dalcol@etiene.net>2017-11-11 19:43:30 +0000
commite8d373c4feb9cddc9cc2e50e2f486bc7ef6bcf9c (patch)
treec85524edc17201918be9c4f0cd2296d3636a9ffc
parent5248a1a5836707c33f2543f46f9e2254c03628cd (diff)
downloadlibgit2-e8d373c4feb9cddc9cc2e50e2f486bc7ef6bcf9c.tar.gz
merge: add error handling for index reload
Cleans up should git_repository_index or git_index_read fail
-rw-r--r--src/merge.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/merge.c b/src/merge.c
index e9616a958..5eb98848e 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,