Skip to content

Commit 0505666

Browse files
rscharfegitster
authored andcommitted
commit: use commit_stack
Use commit_stack instead of open-coding it. Also convert the loop counter i to size_t to match the type of the nr member of struct commit_stack. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 3e0db84 commit 0505666

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
@@ -1015,9 +1015,7 @@ void sort_in_topological_order(struct commit_list **list, enum rev_sort_order so
10151015
}
10161016

10171017
struct rev_collect {
1018-
struct commit **commit;
1019-
int nr;
1020-
int alloc;
1018+
struct commit_stack stack;
10211019
unsigned int initial : 1;
10221020
};
10231021

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

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

@@ -1060,7 +1057,7 @@ struct commit *get_fork_point(const char *refname, struct commit *commit)
10601057
struct object_id oid;
10611058
struct rev_collect revs;
10621059
struct commit_list *bases = NULL;
1063-
int i;
1060+
size_t i;
10641061
struct commit *ret = NULL;
10651062
char *full_refname;
10661063

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

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

1082-
if (!revs.nr)
1079+
if (!revs.stack.nr)
10831080
add_one_commit(&oid, &revs);
10841081

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

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

10921089
/*
@@ -1097,16 +1094,16 @@ struct commit *get_fork_point(const char *refname, struct commit *commit)
10971094
goto cleanup_return;
10981095

10991096
/* And the found one must be one of the reflog entries */
1100-
for (i = 0; i < revs.nr; i++)
1101-
if (&bases->item->object == &revs.commit[i]->object)
1097+
for (i = 0; i < revs.stack.nr; i++)
1098+
if (&bases->item->object == &revs.stack.items[i]->object)
11021099
break; /* found */
1103-
if (revs.nr <= i)
1100+
if (revs.stack.nr <= i)
11041101
goto cleanup_return;
11051102

11061103
ret = bases->item;
11071104

11081105
cleanup_return:
1109-
free(revs.commit);
1106+
commit_stack_clear(&revs.stack);
11101107
free_commit_list(bases);
11111108
free(full_refname);
11121109
return ret;

0 commit comments

Comments
 (0)