Subject: Re: [PATCH 5/5] cbtree.h: define cb_init() in terms of CBTREE_INIT

From: Ævar Arnfjörð Bjarmason <[email-masked]>
Date: Mon, 27 Sep 2021 13:02:35 +0200

On Mon, Sep 27 2021, Johannes Sixt wrote:

> Am 27.09.21 um 02:39 schrieb Ævar Arnfjörð Bjarmason:
>> --- a/cbtree.h
>> +++ b/cbtree.h
>> @@ -37,11 +37,12 @@ enum cb_next {
>>  	CB_BREAK = 1
>>  };
>>  
>> -#define CBTREE_INIT { .root = NULL }
>> +#define CBTREE_INIT { 0 }
>>  
>>  static inline void cb_init(struct cb_tree *t)
>>  {
>> -	t->root = NULL;
>> +	struct cb_tree blank = CBTREE_INIT;
>
> This could be
>
> 	static const struct cb_tree blank = CBTREE_INIT;

*nod*...

>> +	memcpy(t, &blank, sizeof(*t));
>
> Is
> 	*t = blank;
>
> not a thing in C?
>
> -- Hannes

...but to both this & the above my reply in the side-thread at
https://lore.kernel.org/git/[email-masked]/
applies. I.e. this is just following a pattern I got from Jeff King &
used in bd4232fac33 (Merge branch 'ab/struct-init', 2021-07-16).

FWIW with "const" in general I don't use it as much as I'd personally
prefer, see e.g. [1] for one recent discussion, but maybe there wouldn't
be any push-back in this case...

1. https://lore.kernel.org/git/[email-masked]/