[PATCH v3 1/3] git-compat-util: introduce ASSERT() macro
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Mar 19, 2025, 16:22 UTC
- Message-ID
- <d22ff3e3f97dfa1b88e78b81d85d9bc66c6a74d1.1742401378.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1881.v3.git.1742401378.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>
Create a ASSERT() macro which is similar to assert(), but will not be compiled out when NDEBUG is defined, and is thus safe to use even if its argument has side-effects.
We will use this new macro in a subsequent commit to convert a few existing assert() invocations to ASSERT(). In particular, we'll convert the handful of invocations which cannot be proven to be free of side effects with a simple compiler/linker hack.
Signed-off-by: Elijah Newren <newren@gmail.com> --- git-compat-util.h | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/git-compat-util.h b/git-compat-util.h index e123288e8f1..d7f3407128c 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -1460,6 +1460,8 @@ extern int bug_called_must_BUG; __attribute__((format (printf, 3, 4))) NORETURN void BUG_fl(const char *file, int line, const char *fmt, ...); #define BUG(...) BUG_fl(__FILE__, __LINE__, __VA_ARGS__) +/* ASSERT: like assert(), but won't be compiled out with NDEBUG */ +#define ASSERT(a) if (!(a)) BUG("Assertion `" #a "' failed.") __attribute__((format (printf, 3, 4))) void bug_fl(const char *file, int line, const char *fmt, ...); #define bug(...) bug_fl(__FILE__, __LINE__, __VA_ARGS__)
-- gitgitgadget