Re: [PATCH 5/5] cbtree.h: define cb_init() in terms of CBTREE_INIT
flat view
From: Phillip Wood <hidden>
Date: 2021-09-30 10:01:46
On 27/09/2021 12:00, Ævar Arnfjörð Bjarmason wrote:
On Mon, Sep 27 2021, Phillip Wood wrote:quoted
Hi Ævar On 27/09/2021 01:39, Ævar Arnfjörð Bjarmason wrote:quoted
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 <redacted> --- 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