From 5c490f025512d0c70664bac836a849ad90af5a52 Mon Sep 17 00:00:00 2001 From: Michael Jones Date: Fri, 25 Apr 2025 14:37:32 -0700 Subject: [PATCH] [libc] Update assert for C23 Previously the assert macro took one argument named "e", but this led to possible errors if the caller had commas in their input. C23 changed the definition of assert to use `__VA_ARGS__` to ensure comma cases are handled properly. This patch doesn't introduce the enforcement function mentioned in the standard update, though that may be done in a followup. Fixes #136184 --- libc/include/assert.h.def | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libc/include/assert.h.def b/libc/include/assert.h.def index d5ae14a1cd810..2c27712251b17 100644 --- a/libc/include/assert.h.def +++ b/libc/include/assert.h.def @@ -19,14 +19,14 @@ #undef assert #ifdef NDEBUG -#define assert(e) (void)0 +#define assert(...) ((void)0) #else #ifdef __cplusplus extern "C" #endif _Noreturn void __assert_fail(const char *, const char *, unsigned, const char *) __NOEXCEPT; -#define assert(e) \ - ((e) ? (void)0 : __assert_fail(#e, __FILE__, __LINE__, __PRETTY_FUNCTION__)) +#define assert(...) \ + ((__VA_ARGS__) ? ((void)0) : __assert_fail(#__VA_ARGS__, __FILE__, __LINE__, __PRETTY_FUNCTION__)) #endif %%public_api()