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