From e7f251fdb046fb25011f9306a5255ed371ce1b60 Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Sat, 27 Oct 2018 17:40:24 +0200 Subject: [PATCH] Fix assert when used as an expression Based on what musl does. --- include/bits/assert.h | 7 +++---- tests/assert.c | 5 ++++- tests/expected/assert.stdout | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/include/bits/assert.h b/include/bits/assert.h index 3a8c1b0017..2daab42812 100644 --- a/include/bits/assert.h +++ b/include/bits/assert.h @@ -2,11 +2,10 @@ #define _BITS_ASSERT_H #ifdef NDEBUG -# define assert(cond) +# define assert(cond) (void) 0 #else -# define assert(cond) if (!(cond)) { \ - __assert(__func__, __FILE__, __LINE__, #cond); \ - } +# define assert(cond) \ + ((void)((cond) || (__assert(__func__, __FILE__, __LINE__, #cond), 0))) #endif #endif diff --git a/tests/assert.c b/tests/assert.c index 320737f2f6..7f98bbe9c5 100644 --- a/tests/assert.c +++ b/tests/assert.c @@ -5,9 +5,12 @@ int main() { assert(1 == 1); assert(1 + 1 == 2); - puts("yay!"); + if (assert(0 == 0), 1) { + puts("groovy!"); + } + //This fails, but I can't test it because that'd //make the test fail lol //assert(42 == 1337); diff --git a/tests/expected/assert.stdout b/tests/expected/assert.stdout index 3650d378d3..028678d987 100644 --- a/tests/expected/assert.stdout +++ b/tests/expected/assert.stdout @@ -1 +1,2 @@ yay! +groovy!