LibC: Replace use of do/while in assert() with the ternary operator
It's a single expression, no do/while needed. This makes assert() work with the comma operator (assert(foo), assert(bar), assert(baz)). Found because exactly this is being used somewhere in the guts of LLVM.
This commit is contained in:
parent
0c7a319e6b
commit
15d5c62915
Notes:
sideshowbarker
2024-07-18 09:09:30 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/15d5c629158 Pull-request: https://github.com/SerenityOS/serenity/pull/8698 Reviewed-by: https://github.com/gunnarbeutner ✅
1 changed files with 5 additions and 5 deletions
|
@ -14,11 +14,11 @@ __BEGIN_DECLS
|
|||
__attribute__((noreturn)) void __assertion_failed(const char* msg);
|
||||
# define __stringify_helper(x) # x
|
||||
# define __stringify(x) __stringify_helper(x)
|
||||
# define assert(expr) \
|
||||
do { \
|
||||
if (__builtin_expect(!(expr), 0)) \
|
||||
__assertion_failed(#expr "\n" __FILE__ ":" __stringify(__LINE__)); \
|
||||
} while (0)
|
||||
# define assert(expr) \
|
||||
(__builtin_expect(!(expr), 0) \
|
||||
? __assertion_failed(#expr "\n" __FILE__ ":" __stringify(__LINE__)) \
|
||||
: void(0))
|
||||
|
||||
#else
|
||||
# define assert(expr) ((void)(0))
|
||||
# define VERIFY_NOT_REACHED() _abort()
|
||||
|
|
Loading…
Add table
Reference in a new issue