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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <avarab@xxxxxxxxx>
---
   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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux