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>
René Scharfe committed
Dec 24, 2025 at 18:03 UTC
958a816794b9382fe90585b674ee8b96ed6aa8bf
2 files changed
+7
-1
commit.c
+6
-1
index 55b1c8d2f8..28bb5ce029 100644
--- a/commit.c
+++ b/commit.c
@@ -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;
}
commit.h
+1
index 7c01a76425..79a761c37d 100644
--- a/commit.h
+++ b/commit.h
@@ -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 *);