]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Lib: Use alloc_size() function attribute
authorOndrej Zajicek <santiago@crfreenet.org>
Tue, 28 May 2024 14:41:24 +0000 (16:41 +0200)
committerOndrej Zajicek <santiago@crfreenet.org>
Tue, 28 May 2024 14:41:24 +0000 (16:41 +0200)
lib/birdlib.h
lib/resource.h

index b722641116cf4b55406b3bd3dfbbc8359fa0567b..fac7e4eacd661156e9a49cfbe3916bb7332ebb42 100644 (file)
@@ -75,7 +75,8 @@ static inline int u64_cmp(u64 i1, u64 i2)
 #define NORET __attribute__((noreturn))
 #define UNUSED __attribute__((unused))
 #define PACKED __attribute__((packed))
-#define NONNULL(...) __attribute__((nonnull((__VA_ARGS__))))
+#define NONNULL(...) __attribute__((nonnull(__VA_ARGS__)))
+#define ALLOC_SIZE(...) __attribute__((alloc_size(__VA_ARGS__)))
 
 #define STATIC_ASSERT(EXP) _Static_assert(EXP, #EXP)
 #define STATIC_ASSERT_MSG(EXP,MSG) _Static_assert(EXP, MSG)
index a4e110a5144d086b35380b7548a2dca6c6774949..1e9a7b78bd513dcf5e3e30de20dd385f2aeea47c 100644 (file)
@@ -57,9 +57,9 @@ extern pool root_pool;
 
 /* Normal memory blocks */
 
-void *mb_alloc(pool *, unsigned size);
-void *mb_allocz(pool *, unsigned size);
-void *mb_realloc(void *m, unsigned size);
+void *mb_alloc(pool *, unsigned size) ALLOC_SIZE(2);
+void *mb_allocz(pool *, unsigned size) ALLOC_SIZE(2);
+void *mb_realloc(void *m, unsigned size) ALLOC_SIZE(2);
 void mb_free(void *);
 
 /* Memory pools with linear allocation */
@@ -73,9 +73,9 @@ typedef struct lp_state {
 } lp_state;
 
 linpool *lp_new(pool *);
-void *lp_alloc(linpool *, unsigned size);      /* Aligned */
-void *lp_allocu(linpool *, unsigned size);     /* Unaligned */
-void *lp_allocz(linpool *, unsigned size);     /* With clear */
+void *lp_alloc(linpool *, unsigned size) ALLOC_SIZE(2);                /* Aligned */
+void *lp_allocu(linpool *, unsigned size) ALLOC_SIZE(2);       /* Unaligned */
+void *lp_allocz(linpool *, unsigned size) ALLOC_SIZE(2);       /* With clear */
 void lp_flush(linpool *);                      /* Free everything, but leave linpool */
 void lp_save(linpool *m, lp_state *p);         /* Save state */
 void lp_restore(linpool *m, lp_state *p);      /* Restore state */