]> git.ipfire.org Git - thirdparty/git.git/commitdiff
commit: add commit_stack_grow()
authorRené Scharfe <l.s.r@web.de>
Wed, 24 Dec 2025 17:03:25 +0000 (18:03 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 Dec 2025 23:29:28 +0000 (08:29 +0900)
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>
commit.c
commit.h

index 55b1c8d2f8d21d69ff06e766c01ab379f33c0cf4..28bb5ce029f3c521f0e2cc670a9667989a84f580 100644 (file)
--- 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;
 }
 
index 7c01a76425f035f9cc3552aae071b61e314180b5..79a761c37df0236b386b18a69e874793de3f1c3c 100644 (file)
--- 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 *);