From: Willy Tarreau Date: Wed, 31 Aug 2022 08:52:25 +0000 (+0200) Subject: BUILD: debug: make sure debug macros are never empty X-Git-Tag: v2.7-dev5~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d8009a1ca6607bfe08978476ae2c77679b2b5453;p=thirdparty%2Fhaproxy.git BUILD: debug: make sure debug macros are never empty 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. --- diff --git a/include/haproxy/bug.h b/include/haproxy/bug.h index d65c1567c3..60b2467936 100644 --- a/include/haproxy/bug.h +++ b/include/haproxy/bug.h @@ -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