From 399c0ec17f4a2cd8414404a12de7ba2589421d1a Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Tue, 24 Sep 2024 10:57:01 +0900 Subject: [PATCH] [zone] Use a static_assert for retain's offset I'd written the old version long before static_assert was available in C. --- libs/util/zone.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libs/util/zone.c b/libs/util/zone.c index 1246876eb..34f5ff06f 100644 --- a/libs/util/zone.c +++ b/libs/util/zone.c @@ -82,6 +82,9 @@ typedef struct memblock_s { int id; // should be ZONEID int retain; // reference counter (optional usage) } __attribute__((aligned (64))) memblock_t; +static_assert (__builtin_offsetof (memblock_t, retain) == 60, + "memblock_t.retain at incorrect offset"); + struct memzone_s { size_t size; // total bytes malloced, including header @@ -214,13 +217,9 @@ z_error (memzone_t *zone, const char *msg) VISIBLE void Z_ClearZone (memzone_t *zone, size_t size, size_t zone_offset, size_t ele_size) { - memblock_t *block - = __builtin_choose_expr (__builtin_offsetof (memblock_t, retain) == 60, - 0, (void) 0); - // set the entire zone to one free block - block = (memblock_t *) (zone + 1); + auto block = (memblock_t *) (zone + 1); zone->blocklist.next = block; zone->blocklist.prev = block; zone->blocklist.tag = 1; // in use block