Mesa (master): util: Make assert a no-op on non-debug builds.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Sun Oct 4 21:03:45 UTC 2009


Module: Mesa
Branch: master
Commit: 7a2271c65963c86ec1e5d9523b2eecf9ee59fe9d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a2271c65963c86ec1e5d9523b2eecf9ee59fe9d

Author: José Fonseca <jfonseca at vmware.com>
Date:   Sun Oct  4 21:59:24 2009 +0100

util: Make assert a no-op on non-debug builds.

This ensures that an assertion like

  assert(expensive_test());

won't have any penalty on release builds. It also implies that no vital
code should be in assert expressions.

---

 src/gallium/auxiliary/util/u_debug.h |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/gallium/auxiliary/util/u_debug.h b/src/gallium/auxiliary/util/u_debug.h
index b82e7cb..b8c56fd 100644
--- a/src/gallium/auxiliary/util/u_debug.h
+++ b/src/gallium/auxiliary/util/u_debug.h
@@ -181,11 +181,14 @@ void _debug_assert_fail(const char *expr,
  * 
  * Do not expect that the assert call terminates -- errors must be handled 
  * regardless of assert behavior.
+ *
+ * For non debug builds the assert macro will expand to a no-op, so do not
+ * call functions with side effects in the assert expression.
  */
 #ifdef DEBUG
 #define debug_assert(expr) ((expr) ? (void)0 : _debug_assert_fail(#expr, __FILE__, __LINE__, __FUNCTION__))
 #else
-#define debug_assert(expr) ((void)(expr))
+#define debug_assert(expr) ((void)0)
 #endif
 
 




More information about the mesa-commit mailing list