utils/macros.h (STATIC_ASSERT): Boolean-canonify the expression.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 23 Jun 2022 14:01:14 +0000 (15:01 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 23 Jun 2022 14:03:21 +0000 (15:03 +0100)
6.7.10p3 insists that the expression be an integer constant expression,
but this isn't in a constraint, so the behaviour is undefined if it's
not an integer constant expression.  Apply `!!' to force pointerish
expressions to integer type.

*headdesk*

utils/macros.h

index a5263e1..45420e2 100644 (file)
@@ -51,7 +51,7 @@
 #define GLUE(x, y) MLIB__GLUE(x, y)
 
 #ifdef static_assert
-#  define STATIC_ASSERT(cond, msg) static_assert(cond, msg)
+#  define STATIC_ASSERT(cond, msg) static_assert(!!(cond), msg)
 #else
 #  define STATIC_ASSERT(cond, msg)                                     \
        IGNORABLE extern char static_assert_failed[2*!!(cond) - 1]