From: Elijah Newren Date: Wed, 19 Mar 2025 16:22:56 +0000 (+0000) Subject: git-compat-util: introduce ASSERT() macro X-Git-Tag: v2.50.0-rc0~141^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=07fbc15c20c2fb447204869071b0576ab8892fa4;p=thirdparty%2Fgit.git git-compat-util: introduce ASSERT() macro 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 Acked-by: Taylor Blau Signed-off-by: Junio C Hamano --- diff --git a/git-compat-util.h b/git-compat-util.h index e123288e8f..d7f3407128 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__)