]> git.ipfire.org Git - thirdparty/git.git/commitdiff
mergesort: avoid left shift overflow
authorRené Scharfe <l.s.r@web.de>
Mon, 15 Nov 2021 23:19:38 +0000 (00:19 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Nov 2021 20:42:06 +0000 (12:42 -0800)
Use size_t to match n when building the bitmask for checking whether a
rank is occupied, instead of the default signed int.

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

index 6216835566a38297bc6d2d9543cf102ed8f42944..bd9c6ef8eec5bc23f8c83fe8d373be946b8b2f48 100644 (file)
@@ -63,7 +63,7 @@ void *llist_mergesort(void *list,
                void *next = get_next_fn(list);
                if (next)
                        set_next_fn(list, NULL);
-               for (i = 0; n & (1 << i); i++)
+               for (i = 0; n & ((size_t)1 << i); i++)
                        list = llist_merge(ranks[i], list, get_next_fn,
                                           set_next_fn, compare_fn);
                n++;