]> git.ipfire.org Git - thirdparty/git.git/commitdiff
git-compat-util: introduce ASSERT() macro
authorElijah Newren <newren@gmail.com>
Wed, 19 Mar 2025 16:22:56 +0000 (16:22 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Mar 2025 10:31:47 +0000 (03:31 -0700)
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>
Acked-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-compat-util.h

index e123288e8f139328ad4e9f73a8c4f0bf027301e6..d7f3407128c062e9567512b6cbed07fd691bae12 100644 (file)
@@ -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__)