From: Phillip Wood Date: Thu, 30 Sep 2021 10:01:04 GMT Subject: Re: [PATCH 5/5] cbtree.h: define cb_init() in terms of CBTREE_INIT Message-ID: <05770f9c-49e9-2572-d610-dcbd2b97cca3@gmail.com> In-Reply-To: <87h7e61duk.fsf@evledraar.gmail.com> On 27/09/2021 12:00, Ævar Arnfjörð Bjarmason wrote: > > On Mon, Sep 27 2021, Phillip Wood wrote: > >> Hi Ævar >> >> On 27/09/2021 01:39, Ævar Arnfjörð Bjarmason wrote: >>> Use the same pattern for cb_init() as the one established in the >>> recent refactoring of other such patterns in >>> 5726a6b4012 (*.c *_init(): define in terms of corresponding *_INIT >>> macro, 2021-07-01). >>> Signed-off-by: Ævar Arnfjörð Bjarmason >>> --- >>> cbtree.h | 5 +++-- >>> 1 file changed, 3 insertions(+), 2 deletions(-) >>> diff --git a/cbtree.h b/cbtree.h >>> index a04a312c3f5..dedbb8e2a45 100644 >>> --- 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; >>> + memcpy(t, &blank, sizeof(*t)); >>> } >> >> Slightly off topic but would this be a good site for a compound >> literal test balloon? >> >> *t = (struct cb_tree){ 0 }; >> >> Compound literals are in C99 and seem to have been supported by MSVC >> since 2013 [1]. > > I think that's a good thing to test out, FWIW I've also tested it on the > IBM xlc, Oracle SunCC and HP/UX's aCC, they all seem to accept it. Thanks for taking the time to test those other systems, it's good to know they support compound literals > But I'd prefer just doing that in some general follow-up to bd4232fac33 > (Merge branch 'ab/struct-init', 2021-07-16), i.e. let's just use the > init pattern it established here. I agree it makes sense to introduce it as a separate series. I'm not sure if there is a pressing need for them but it is the sort of thing that is occasionally useful. Best Wishes Phillip