Subject: Re: [PATCH 1/2] git-compat-util: introduce MEMZERO_ARRAY() macro

From: René Scharfe <[email-masked]>
Date: Fri, 12 Dec 2025 14:02:17 +0100

On 12/11/25 4:18 AM, Junio C Hamano wrote:
> Toon Claes <[email-masked]> writes:
> 
>> +@@
>> +- memset(ptr, \( 0x0 \| 0 \), n * \( sizeof(T)
>> +-                                 \| sizeof(*ptr)
>> +-                                 \) )
>> ++ MEMZERO_ARRAY(ptr, n)
> 
> Shouldn't we be also catching
> 
> 	memset(array, '\0', sizeof(array[0]) * ARRAY_SIZE(array));
> 
> in addition to "0" and "0x0"?

Good idea to match "sizeof(ptr[...])", even though we currently don't have
matching code.

Good idea also to match "'\0'".  There's code with that pattern in
compat/regex/.

You can drop "0x0", though, "0" matches it already (at least for me, I have
"spatch version 1.3-dirty compiled with OCaml version 5.1.1" from Homebrew).

If you put parentheses around "n" in the pre-image then Coccinelle will
remove them if present and still match code without them.  They are no
longer needed without the multiplication.  Their removal would improve the
result for ewah/bitmap.c.

René