summaryrefslogtreecommitdiff
path: root/includes/Rts.h
diff options
context:
space:
mode:
Diffstat (limited to 'includes/Rts.h')
-rw-r--r--includes/Rts.h24
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 */
/*