git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] mergesort: avoid left shift overflow

From
Philip Oakley <philipoakley@iee.email>
Date
Nov 18, 2021, 23:27 UTC
Message-ID
<7fbd4cf4-5f66-a4cd-0c41-e5b12d14d761@iee.email>
In-Reply-To
<5eabbe1c-4c0f-559a-da21-423afec89e7e@web.de>
On 15/11/2021 23:19, René Scharfe wrote:
Show 25 quoted lines
> 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>
> ---
> Ugh, sorry. :(
>
>  mergesort.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mergesort.c b/mergesort.c
> index 6216835566..bd9c6ef8ee 100644
> --- a/mergesort.c
> +++ b/mergesort.c
> @@ -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++;
> --
> 2.33.1
Looks good to me.

I already had this locally as part of an MSVC (Visual Studio) fix for the various C4334 warnings.

The other cases are in object-file.c, diffcore-delta.c (2 occurrences) , and repack.c.

My patches are in https://github.com/PhilipOakley/git/tree/oneU_t
Philip
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 5 of 10 in “mergesort: avoid left shift overflow”
  1. mergesort: avoid left shift overflowRené Scharfe, Nov 15, 2021
  2. Johannes SchindelinNov 16, 2021
  3. Junio C HamanoNov 17, 2021
  4. Johannes SchindelinNov 17, 2021
  5. Philip OakleyNov 18, 2021
  6. Johannes SchindelinNov 19, 2021
  7. René ScharfeNov 19, 2021
  8. Philip OakleyNov 19, 2021
  9. Junio C HamanoNov 19, 2021
  10. Philip OakleyNov 19, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.