commit: add commit_stack_grow()

Add a function for increasing the capacity of a commit_stack.  It is
useful for reducing reallocations when the target size is known in
advance.

Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
René Scharfe 2025-12-24 18:03:25 +01:00 committed by Junio C Hamano
parent 506a7b6690
commit 958a816794
2 changed files with 7 additions and 1 deletions

View File

@ -1988,9 +1988,14 @@ void commit_stack_init(struct commit_stack *stack)
stack->nr = stack->alloc = 0;
}
void commit_stack_grow(struct commit_stack *stack, size_t extra)
{
ALLOC_GROW(stack->items, st_add(stack->nr, extra), stack->alloc);
}
void commit_stack_push(struct commit_stack *stack, struct commit *commit)
{
ALLOC_GROW(stack->items, stack->nr + 1, stack->alloc);
commit_stack_grow(stack, 1);
stack->items[stack->nr++] = commit;
}

View File

@ -388,6 +388,7 @@ struct commit_stack {
#define COMMIT_STACK_INIT { 0 }
void commit_stack_init(struct commit_stack *);
void commit_stack_grow(struct commit_stack *, size_t);
void commit_stack_push(struct commit_stack *, struct commit *);
struct commit *commit_stack_pop(struct commit_stack *);
void commit_stack_clear(struct commit_stack *);