diff options
author | Vicent Martà <vicent@github.com> | 2013-05-31 14:36:08 -0700 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2013-05-31 14:36:08 -0700 |
commit | efd5a4e16a55ff32ce0b300d3792e44aed4157f8 (patch) | |
tree | 33fa5cceec1bbb24ab919ccb21732cd1487d4fec /src/merge.c | |
parent | 1ed356dcfef449313bac3ce795f26d19423c744c (diff) | |
parent | cee695ae6b9a9f586d32d0b9460a358bfdc4fe1b (diff) | |
download | libgit2-vmg/full-ref-iterator.tar.gz |
Merge pull request #1627 from arrbee/iterator-api-improvementsvmg/full-ref-iterator
Make iterators use GIT_ITEROVER & smart advance
Diffstat (limited to 'src/merge.c')
-rw-r--r-- | src/merge.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/merge.c b/src/merge.c index 11345587c..047d96013 100644 --- a/src/merge.c +++ b/src/merge.c @@ -1259,7 +1259,8 @@ int git_merge_diff_list__find_differences( /* Set up the iterators */ for (i = 0; i < 3; i++) { - if ((error = git_iterator_current(&items[i], iterators[i])) < 0) + error = git_iterator_current(&items[i], iterators[i]); + if (error < 0 && error != GIT_ITEROVER) goto done; } @@ -1313,11 +1314,16 @@ int git_merge_diff_list__find_differences( error = merge_index_insert_conflict(diff_list, &df_data, cur_items); else error = merge_index_insert_unmodified(diff_list, cur_items); + if (error < 0) + goto done; /* Advance each iterator that participated */ for (i = 0; i < 3; i++) { - if (cur_items[i] != NULL && - (error = git_iterator_advance(&items[i], iterators[i])) < 0) + if (cur_items[i] == NULL) + continue; + + error = git_iterator_advance(&items[i], iterators[i]); + if (error < 0 && error != GIT_ITEROVER) goto done; } } @@ -1326,6 +1332,9 @@ done: for (i = 0; i < 3; i++) git_iterator_free(iterators[i]); + if (error == GIT_ITEROVER) + error = 0; + return error; } |