diff options
Diffstat (limited to 'includes/Rts.h')
-rw-r--r-- | includes/Rts.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/includes/Rts.h b/includes/Rts.h index 5e657e07ce..82fd48fcbf 100644 --- a/includes/Rts.h +++ b/includes/Rts.h @@ -112,7 +112,9 @@ extern "C" { Assertions and Debuggery CHECK(p) evaluates p and terminates with an error if p is false - ASSERT(p) like CHECK(p) if DEBUG is on, otherwise a no-op + ASSERT(p) like CHECK(p) a no-op, unless ASSERTS_ENABLED is on. Either + because we're building in the DEBUG way or USE_ASSERTS_ALL_WAYS + (aka --enable-asserts-all-ways) was enabled at ./configure time. -------------------------------------------------------------------------- */ void _assertFail(const char *filename, unsigned int linenum) @@ -130,12 +132,22 @@ void _assertFail(const char *filename, unsigned int linenum) else \ barf(msg, ##__VA_ARGS__) -#if !defined(DEBUG) -#define ASSERT(predicate) /* nothing */ -#define ASSERTM(predicate,msg,...) /* nothing */ +#if defined(DEBUG) || defined(USE_ASSERTS_ALL_WAYS) +#define ASSERTS_ENABLED 1 #else -#define ASSERT(predicate) CHECK(predicate) -#define ASSERTM(predicate,msg,...) CHECKM(predicate,msg,##__VA_ARGS__) +#undef ASSERTS_ENABLED +#endif + +#if ASSERTS_ENABLED +#define ASSERT(predicate) \ + do { CHECK(predicate); } while(0) +#define ASSERTM(predicate,msg,...) \ + do { CHECKM(predicate, msg, ##__VA_ARGS__); } while(0) +#else +#define ASSERT(predicate) \ + do { (void) sizeof(predicate); } while(0) +#define ASSERTM(predicate,msg,...) \ + do { (void) sizeof(predicate); (void) sizeof(msg); } while(0) #endif /* DEBUG */ /* |