From 23cd0025621c17d9007c2e912bd5745a8986d260 Mon Sep 17 00:00:00 2001 From: David Tardon Date: Fri, 9 Sep 2022 10:04:36 +0200 Subject: [PATCH] macro-fundamental: allow to nest ASSERT_PTR E.g., int job_frobnicate(Job *j) { Unit *u = ASSERT_PTR(ASSERT_PTR(j)->unit); ... } --- src/fundamental/macro-fundamental.h | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 8b483f0b50..2536c741c6 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -81,18 +81,13 @@ #endif /* This passes the argument through after (if asserts are enabled) checking that it is not null. */ -#define ASSERT_PTR(expr) \ - ({ \ - typeof(expr) _expr_ = (expr); \ - assert(_expr_); \ - _expr_; \ - }) - -#define ASSERT_SE_PTR(expr) \ - ({ \ - typeof(expr) _expr_ = (expr); \ - assert_se(_expr_); \ - _expr_; \ +#define ASSERT_PTR(expr) _ASSERT_PTR(expr, UNIQ_T(_expr_, UNIQ), assert) +#define ASSERT_SE_PTR(expr) _ASSERT_PTR(expr, UNIQ_T(_expr_, UNIQ), assert_se) +#define _ASSERT_PTR(expr, var, check) \ + ({ \ + typeof(expr) var = (expr); \ + check(var); \ + var; \ }) #define ASSERT_NONNEG(expr) \