I (Julian Foad) wrote:
> There isn't currently an easy build switch (such as NDEBUG) to disable
> SVN_ERR_ASSERT completely at compile time. That's just a side issue. If
> you want such a switch, just ask; we can easily create one. Or if you think
> we
> need two levels of assertions -- one for quick tests and another for slow
> tests
> -- and want to be able to compile-out the slow ones independently of the
> quick
> ones, just ask. But implying we should use 'assert' for slow tests and
> 'SVN_ERR_ASSERT' for quick tests is the Wrong Way.
We can also introduce run-time control of whether the conditions are evaluated:
test a global 'assertions enabled?' variable or function before evaluating the
condition. For example:
Index: subversion/include/svn_error.h
===================================================================
#define SVN_ERR_ASSERT(expr) \
do { \
- if (!(expr)) \
+ if (svn_error__assertions_enabled && !(expr)) \
SVN_ERR(svn_error__malfunction(TRUE, __FILE__, __LINE__, #expr)); \
} while (0)
+/* ... */
+extern svn_boolean_t svn_error__assertions_enabled;
- Julian