]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: debug: make sure debug macros are never empty
authorWilly Tarreau <w@1wt.eu>
Wed, 31 Aug 2022 08:52:25 +0000 (10:52 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 31 Aug 2022 08:53:53 +0000 (10:53 +0200)
As outlined in commit f7ebe584d7 ("BUILD: debug: Add braces to if
statement calling only CHECK_IF()"), the BUG_ON() family of macros
is incorrectly defined to be empty when debugging is disabled, and
that can lead to trouble. Make sure they always fall back to the
usual "do { } while (0)". This may be backported to 2.6 if needed,
though no such issue was met there to date.

include/haproxy/bug.h

index d65c1567c3388da70ecb1fd88277c6bcf1168881..60b24679368d9fd47398fb96b0fab8f537356032 100644 (file)
@@ -140,9 +140,9 @@ static inline __attribute((always_inline)) void ha_crash_now(void)
 #  define CHECK_IF(cond)     _BUG_ON_ONCE(cond, __FILE__, __LINE__, 1, "FATAL: check ",   "")
 # endif
 #else
-#  define BUG_ON(cond)
-#  define WARN_ON(cond)
-#  define CHECK_IF(cond)
+#  define BUG_ON(cond)       do { } while (0)
+#  define WARN_ON(cond)      do { } while (0)
+#  define CHECK_IF(cond)     do { } while (0)
 #endif
 
 /* These macros are only for hot paths and remain disabled unless DEBUG_STRICT is 2 or above.
@@ -164,8 +164,8 @@ static inline __attribute((always_inline)) void ha_crash_now(void)
 #  define CHECK_IF_HOT(cond) _BUG_ON_ONCE(cond, __FILE__, __LINE__, 1, "FATAL: check ",   "")
 # endif
 #else
-#  define BUG_ON_HOT(cond)
-#  define CHECK_IF_HOT(cond)
+#  define BUG_ON_HOT(cond)   do { } while (0)
+#  define CHECK_IF_HOT(cond) do { } while (0)
 #endif