diff options
| author | René Scharfe <l.s.r@web.de> | 2026-02-08 12:37:38 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2026-02-08 15:02:09 -0800 |
| commit | 050566633ad0e168105687cdbdca36cd1add06d5 (patch) | |
| tree | 74254fc235edce3abbd2bfaa15ff043b79a680f9 /commit.c | |
| parent | 3e0db84c88c57e70ac8be8c196dfa92c5d656fbc (diff) | |
| download | git-050566633ad0e168105687cdbdca36cd1add06d5.tar.xz | |
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>
Diffstat (limited to 'commit.c')
| -rw-r--r-- | commit.c | 29 |
1 files changed, 13 insertions, 16 deletions
@@ -1015,9 +1015,7 @@ void sort_in_topological_order(struct commit_list **list, enum rev_sort_order so } struct rev_collect { - struct commit **commit; - int nr; - int alloc; + struct commit_stack stack; unsigned int initial : 1; }; @@ -1034,8 +1032,7 @@ static void add_one_commit(struct object_id *oid, struct rev_collect *revs) repo_parse_commit(the_repository, commit)) return; - ALLOC_GROW(revs->commit, revs->nr + 1, revs->alloc); - revs->commit[revs->nr++] = commit; + commit_stack_push(&revs->stack, commit); commit->object.flags |= TMP_MARK; } @@ -1060,7 +1057,7 @@ struct commit *get_fork_point(const char *refname, struct commit *commit) struct object_id oid; struct rev_collect revs; struct commit_list *bases = NULL; - int i; + size_t i; struct commit *ret = NULL; char *full_refname; @@ -1074,19 +1071,19 @@ struct commit *get_fork_point(const char *refname, struct commit *commit) die("Ambiguous refname: '%s'", refname); } - memset(&revs, 0, sizeof(revs)); + commit_stack_init(&revs.stack); revs.initial = 1; refs_for_each_reflog_ent(get_main_ref_store(the_repository), full_refname, collect_one_reflog_ent, &revs); - if (!revs.nr) + if (!revs.stack.nr) add_one_commit(&oid, &revs); - for (i = 0; i < revs.nr; i++) - revs.commit[i]->object.flags &= ~TMP_MARK; + for (i = 0; i < revs.stack.nr; i++) + revs.stack.items[i]->object.flags &= ~TMP_MARK; - if (repo_get_merge_bases_many(the_repository, commit, revs.nr, - revs.commit, &bases) < 0) + if (repo_get_merge_bases_many(the_repository, commit, revs.stack.nr, + revs.stack.items, &bases) < 0) exit(128); /* @@ -1097,16 +1094,16 @@ struct commit *get_fork_point(const char *refname, struct commit *commit) goto cleanup_return; /* And the found one must be one of the reflog entries */ - for (i = 0; i < revs.nr; i++) - if (&bases->item->object == &revs.commit[i]->object) + for (i = 0; i < revs.stack.nr; i++) + if (&bases->item->object == &revs.stack.items[i]->object) break; /* found */ - if (revs.nr <= i) + if (revs.stack.nr <= i) goto cleanup_return; ret = bases->item; cleanup_return: - free(revs.commit); + commit_stack_clear(&revs.stack); free_commit_list(bases); free(full_refname); return ret; |
