diff options
author | Etiene Dalcol <dalcol@etiene.net> | 2017-11-11 17:39:25 +0000 |
---|---|---|
committer | Etiene Dalcol <dalcol@etiene.net> | 2017-11-11 19:43:30 +0000 |
commit | e8d373c4feb9cddc9cc2e50e2f486bc7ef6bcf9c (patch) | |
tree | c85524edc17201918be9c4f0cd2296d3636a9ffc | |
parent | 5248a1a5836707c33f2543f46f9e2254c03628cd (diff) | |
download | libgit2-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.c | 7 |
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, |