mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-10 13:04:23 -04:00
Fix compilation on Windows with NDEBUG
Dongsheng Song reports that when building on windows with NDEBUG, you run into an attempt to do EVUTIL_ASSERT(x) where x is a bitfield, which turns into _EVUTIL_NIL_CONDITION(x), which takes sizeof(x), which is illegal. This patch fixes _EVUTIL_NIL_CONDITION to work on bitfields too.
This commit is contained in:
parent
05f0195dd9
commit
cb8059d2d3
@ -52,9 +52,13 @@ extern "C" {
|
|||||||
|
|
||||||
/* A good no-op to use in macro definitions. */
|
/* A good no-op to use in macro definitions. */
|
||||||
#define _EVUTIL_NIL_STMT ((void)0)
|
#define _EVUTIL_NIL_STMT ((void)0)
|
||||||
/* Suppresses the compiler's "unused variable" warnings for unused assert. */
|
/* A no-op that tricks the compiler into thinking a condition is used while
|
||||||
|
* definitely not making any code for it. Used to compile out asserts while
|
||||||
|
* avoiding "unused variable" warnings. The "!" forces the compiler to
|
||||||
|
* do the sizeof() on an int, in case "condition" is a bitfield value.
|
||||||
|
*/
|
||||||
#define _EVUTIL_NIL_CONDITION(condition) do { \
|
#define _EVUTIL_NIL_CONDITION(condition) do { \
|
||||||
(void)sizeof(condition); \
|
(void)sizeof(!(condition)); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/* Internal use only: macros to match patterns of error codes in a
|
/* Internal use only: macros to match patterns of error codes in a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user