From e51494552b784861b58f9546a25dfd74b8c09de9 Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 15 May 2026 14:13:11 +1000 Subject: Fix build with -DNDEBUG Since bc872d91765d, our assert() statements are omitted if we compile with -DNDEBUG, like the standard library assert(3). Unfortunately a trivial but embarrassing mistake in that patch means that instead of never aborting in this case, assert_with_msg() *always* aborts, breaking pretty much everything. There's also a missing #include that breaks the build with -DNDEBUG on at least some library versions. Reported-by: Jan Palus Fixes: bc872d91765d ("treewide: Spell ASSERT() as assert()") Signed-off-by: David Gibson [sbrivio: Explicitly avoid evaluation of expr in assert_with_msg on NDEBUG as suggested by Jan] Signed-off-by: Stefano Brivio --- util.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/util.h b/util.h index 70aadeb..a9dcc04 100644 --- a/util.h +++ b/util.h @@ -6,6 +6,7 @@ #ifndef UTIL_H #define UTIL_H +#include #include #include #include @@ -50,7 +51,7 @@ void abort_with_msg(const char *fmt, ...) */ #ifndef NDEBUG #define assert_with_msg(expr, ...) \ - ((expr) ? (void)0 : abort_with_msg(__VA_ARGS__)) + (1 ? (void)0 : ((void)(expr), abort_with_msg(__VA_ARGS__))) /* The standard library assert() hits our seccomp filter and dies before it can * actually print a message. So, replace it with our own version. */ @@ -60,7 +61,7 @@ void abort_with_msg(const char *fmt, ...) __func__, __FILE__, __LINE__, STRINGIFY(expr)) #else #define assert_with_msg(expr, ...) \ - ((void)(expr), 0 ? (void)0 : abort_with_msg(__VA_ARGS__)) + ((void)(expr), 1 ? (void)0 : abort_with_msg(__VA_ARGS__)) #endif #ifdef P_tmpdir -- cgit v1.2.3