Skip to content

Commit 83037cb

Browse files
committed
Merge branch 'rs/commit-commit-stack'
Code clean-up to use the commit_stack API. * rs/commit-commit-stack: commit: use commit_stack
2 parents 354b8d8 + 0505666 commit 83037cb

1 file changed

Lines changed: 13 additions & 16 deletions

File tree

commit.c

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1014,9 +1014,7 @@ void sort_in_topological_order(struct commit_list **list, enum rev_sort_order so
10141014
}
10151015

10161016
struct rev_collect {
1017-
struct commit **commit;
1018-
int nr;
1019-
int alloc;
1017+
struct commit_stack stack;
10201018
unsigned int initial : 1;
10211019
};
10221020

@@ -1033,8 +1031,7 @@ static void add_one_commit(struct object_id *oid, struct rev_collect *revs)
10331031
repo_parse_commit(the_repository, commit))
10341032
return;
10351033

1036-
ALLOC_GROW(revs->commit, revs->nr + 1, revs->alloc);
1037-
revs->commit[revs->nr++] = commit;
1034+
commit_stack_push(&revs->stack, commit);
10381035
commit->object.flags |= TMP_MARK;
10391036
}
10401037

@@ -1059,7 +1056,7 @@ struct commit *get_fork_point(const char *refname, struct commit *commit)
10591056
struct object_id oid;
10601057
struct rev_collect revs;
10611058
struct commit_list *bases = NULL;
1062-
int i;
1059+
size_t i;
10631060
struct commit *ret = NULL;
10641061
char *full_refname;
10651062

@@ -1073,19 +1070,19 @@ struct commit *get_fork_point(const char *refname, struct commit *commit)
10731070
die("Ambiguous refname: '%s'", refname);
10741071
}
10751072

1076-
memset(&revs, 0, sizeof(revs));
1073+
commit_stack_init(&revs.stack);
10771074
revs.initial = 1;
10781075
refs_for_each_reflog_ent(get_main_ref_store(the_repository),
10791076
full_refname, collect_one_reflog_ent, &revs);
10801077

1081-
if (!revs.nr)
1078+
if (!revs.stack.nr)
10821079
add_one_commit(&oid, &revs);
10831080

1084-
for (i = 0; i < revs.nr; i++)
1085-
revs.commit[i]->object.flags &= ~TMP_MARK;
1081+
for (i = 0; i < revs.stack.nr; i++)
1082+
revs.stack.items[i]->object.flags &= ~TMP_MARK;
10861083

1087-
if (repo_get_merge_bases_many(the_repository, commit, revs.nr,
1088-
revs.commit, &bases) < 0)
1084+
if (repo_get_merge_bases_many(the_repository, commit, revs.stack.nr,
1085+
revs.stack.items, &bases) < 0)
10891086
exit(128);
10901087

10911088
/*
@@ -1096,16 +1093,16 @@ struct commit *get_fork_point(const char *refname, struct commit *commit)
10961093
goto cleanup_return;
10971094

10981095
/* And the found one must be one of the reflog entries */
1099-
for (i = 0; i < revs.nr; i++)
1100-
if (&bases->item->object == &revs.commit[i]->object)
1096+
for (i = 0; i < revs.stack.nr; i++)
1097+
if (&bases->item->object == &revs.stack.items[i]->object)
11011098
break; /* found */
1102-
if (revs.nr <= i)
1099+
if (revs.stack.nr <= i)
11031100
goto cleanup_return;
11041101

11051102
ret = bases->item;
11061103

11071104
cleanup_return:
1108-
free(revs.commit);
1105+
commit_stack_clear(&revs.stack);
11091106
commit_list_free(bases);
11101107
free(full_refname);
11111108
return ret;

0 commit comments

Comments
 (0)