Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Never disable xbt_assert anymore.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 2 Apr 2021 08:25:39 +0000 (10:25 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Fri, 2 Apr 2021 08:36:17 +0000 (10:36 +0200)
ChangeLog
include/xbt/asserts.h

index 62e8630..2e8cd4f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,9 @@
 
 SimGrid (3.27.1) NOT RELEASED YET (v3.28 expected June 21. 2021, 03:32 UTC)
 
+XBT:
+ - xbt_assert is not disabled anymore, even when built with enable_debug=off.
+
 ----------------------------------------------------------------------------
 
 SimGrid (3.27) March 29. 2021
index 53660d3..2799724 100644 (file)
@@ -44,12 +44,11 @@ XBT_ATTRIB_NORETURN XBT_PUBLIC void xbt_abort(void);
  *
  * You can pass them a format message and arguments, just as if it where a printf.
  * It is converted to a XBT_CRITICAL logging request.
- * Be careful: the boolean expression that you want to test should not have side effects, because assertions are
- * disabled at compile time if NDEBUG is set.
+ * An execution backtrace is also displayed, unless the option --log=no_loc is given at run-time.
+ *
+ * Unlike the standard assert, xbt_assert is never disabled, even if the macro NDEBUG is defined at compile time.  So
+ * it's safe to have a condition with side effects.
  */
-#ifdef NDEBUG
-#define xbt_assert(...) ((void)0)
-#else
 /** @brief The condition which failed will be displayed.
     @hideinitializer  */
 #define xbt_assert(...) \
@@ -64,7 +63,6 @@ XBT_ATTRIB_NORETURN XBT_PUBLIC void xbt_abort(void);
       abort();                                                                                                         \
     }                                                                                                                  \
   } while (0)
-#endif
 
 /** @} */
 SG_END_DECL