Skip to content

Commit caaf1a2

Browse files
dschogitster
authored andcommitted
commit-reach(repo_get_merge_bases_many_dirty): pass on errors
(Actually, this commit is only about passing on "missing commits" errors, but adding that to the commit's title would have made it too long.) The `merge_bases_many()` function was just taught to indicate parsing errors, and now the `repo_get_merge_bases_many_dirty()` function is aware of that, too. Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 5317380 commit caaf1a2

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

builtin/merge-base.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@
1010

1111
static int show_merge_base(struct commit **rev, int rev_nr, int show_all)
1212
{
13-
struct commit_list *result, *r;
13+
struct commit_list *result = NULL, *r;
1414

15-
result = repo_get_merge_bases_many_dirty(the_repository, rev[0],
16-
rev_nr - 1, rev + 1);
15+
if (repo_get_merge_bases_many_dirty(the_repository, rev[0],
16+
rev_nr - 1, rev + 1, &result) < 0) {
17+
free_commit_list(result);
18+
return -1;
19+
}
1720

1821
if (!result)
1922
return 1;

commit-reach.c

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -470,17 +470,13 @@ int repo_get_merge_bases_many(struct repository *r,
470470
return get_merge_bases_many_0(r, one, n, twos, 1, result);
471471
}
472472

473-
struct commit_list *repo_get_merge_bases_many_dirty(struct repository *r,
474-
struct commit *one,
475-
int n,
476-
struct commit **twos)
473+
int repo_get_merge_bases_many_dirty(struct repository *r,
474+
struct commit *one,
475+
int n,
476+
struct commit **twos,
477+
struct commit_list **result)
477478
{
478-
struct commit_list *result = NULL;
479-
if (get_merge_bases_many_0(r, one, n, twos, 0, &result) < 0) {
480-
free_commit_list(result);
481-
return NULL;
482-
}
483-
return result;
479+
return get_merge_bases_many_0(r, one, n, twos, 0, result);
484480
}
485481

486482
int repo_get_merge_bases(struct repository *r,

commit-reach.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ int repo_get_merge_bases_many(struct repository *r,
1818
struct commit **twos,
1919
struct commit_list **result);
2020
/* To be used only when object flags after this call no longer matter */
21-
struct commit_list *repo_get_merge_bases_many_dirty(struct repository *r,
22-
struct commit *one, int n,
23-
struct commit **twos);
21+
int repo_get_merge_bases_many_dirty(struct repository *r,
22+
struct commit *one, int n,
23+
struct commit **twos,
24+
struct commit_list **result);
2425

2526
int get_octopus_merge_bases(struct commit_list *in, struct commit_list **result);
2627

0 commit comments

Comments
 (0)