Subject: Re: [PATCH] promisor-remote: fix xcalloc() argument order

From: Junio C Hamano <[email-masked]>
Date: Mon, 22 Aug 2022 15:14:58 -0700

SZEDER Gábor <[email-masked]> writes:

> Pass the number of elements first and their size second, as expected
> by xcalloc().
>
> Patch generated with 'contrib/coccinelle/xcalloc.cocci' and Coccinelle
> v1.0.7 or later (previous Coccinelle versions don't notice this).

One thing is that Coccinelle is way too slow on our codebase,
compared to the usual compilation, to run every time we make
changes.  Combined with the fact that our codebase is mostly clean,
the cycles feel huge waste of time only to find something small like
what this patch fixes.

That sadly discourages us from doing "make coccicheck" more often as
we should.

I _think_ Googlers have 1.1.1 on their linux boxes, so even if our
GitHub Actions CI is fixed to Ubuntu 18.04 and does not run more
recent Coccinelle, we theoretically should have been able to catch
it before it hit the public list, if "1.0.7 or later" was the
condition.  FWIW, "make coccicheck" with what I happen to have
notices it.

$ spatch version
spatch version 1.1.1 compiled with OCaml version 4.13.1
Flags passed to the configure script: --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --enable-ocaml --enable-python --enable-opt
OCaml scripting support: yes
Python scripting support: yes
Syntax of regular expressions: PCRE

Anyway, the patch is correct.

Thanks, will queue.

> Signed-off-by: SZEDER Gábor <[email-masked]>
> ---
>  promisor-remote.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/promisor-remote.c b/promisor-remote.c
> index 5b33f88bca..68f46f5ec7 100644
> --- a/promisor-remote.c
> +++ b/promisor-remote.c
> @@ -146,7 +146,7 @@ static void promisor_remote_init(struct repository *r)
>  	if (r->promisor_remote_config)
>  		return;
>  	config = r->promisor_remote_config =
> -		xcalloc(sizeof(*r->promisor_remote_config), 1);
> +		xcalloc(1, sizeof(*r->promisor_remote_config));
>  	config->promisors_tail = &config->promisors;
>  
>  	repo_config(r, promisor_remote_config, config);