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/87h7e61duk.fsf@xxxxxxxxxxxxxxxxxxx/ 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/patch-1.1-c317e6e125e-20210921T124416Z-avarab@xxxxxxxxx/