[PATCH 1/3] git-compat-util: introduce BUG_IF_NOT() macro
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Mar 14, 2025, 00:20 UTC
- Message-ID
- <109060ccb8665c73aa0c4f73e3cbbddcd135bde4.1741911652.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1881.git.1741911652.gitgitgadget@gmail.com>
From: Elijah Newren <newren@gmail.com>
Create a BUG_IF_NOT() 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 BUG_IF_NOT(). 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 | 1 + 1 file changed, 1 insertion(+)
diff --git a/git-compat-util.h b/git-compat-util.h index e123288e8f1..c3415ad7e0a 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -1460,6 +1460,7 @@ 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__) +#define BUG_IF_NOT(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