From bb96099c652f12b02b802e6528d7f8b496de9d75 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Thu, 1 Apr 2021 19:42:02 -0700 Subject: [PATCH] Define assert as an expression Fixes #138 --- libc/assert.h | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/libc/assert.h b/libc/assert.h index 0bdbd60d..8ab8e0cd 100644 --- a/libc/assert.h +++ b/libc/assert.h @@ -6,19 +6,12 @@ COSMOPOLITAN_C_START_ void __assert_fail(const char *, const char *, int) hidden wontreturn relegated; #ifdef NDEBUG -#define __ASSERT_FAIL(EXPR, FILE, LINE) +#define assert(EXPR) ((void)0) #else -#define __ASSERT_FAIL(EXPR, FILE, LINE) __assert_fail(EXPR, FILE, LINE) +#define assert(EXPR) \ + ((void)((EXPR) || (__assert_fail(#EXPR, __FILE__, __LINE__), 0))) #endif -#define assert(EXPR) \ - do { \ - if (!(EXPR)) { \ - __ASSERT_FAIL(#EXPR, __FILE__, __LINE__); \ - unreachable; \ - } \ - } while (0) - #define static_assert _Static_assert COSMOPOLITAN_C_END_