commit: avoid allocation in clear_commit_marks_many()
authorRené Scharfe <l.s.r@web.de>
Mon, 25 Dec 2017 17:43:37 +0000 (18:43 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 28 Dec 2017 21:50:05 +0000 (13:50 -0800)
Pass the entries of the commit array directly to clear_commit_marks_1()
instead of adding them to a commit_list first.  The function clears the
commit and any first parent without allocation; only higher numbered
parents are added to a list for later treatment.  This change extends
that optimization to clear_commit_marks_many().

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit.c

index cab8d44..8266751 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -547,7 +547,7 @@ void clear_commit_marks_many(int nr, struct commit **commit, unsigned int mark)
        struct commit_list *list = NULL;
 
        while (nr--) {
-               commit_list_insert(*commit, &list);
+               clear_commit_marks_1(&list, *commit, mark);
                commit++;
        }
        while (list)