Always use SVN_ERR_ASSERT [was: svn commit: r1329234 - in /subversion/trunk: ./ subversion/libsvn_delta/compat.c]
From: Julian Foad <julianfoad_at_btopenworld.com>
Date: Mon, 23 Apr 2012 17:01:33 +0100 (BST)
Bert Huijben wrote:
> you could just use
The policy is: always use 'SVN_ERR_ASSERT' rather than 'assert' (in functions that return svn_error_t).
Of course he doesn't "want to slow down" Subversion.
The choice between 'assert' and 'SVN_ERR_ASSERT' should be based on whether we want an application program to be able to catch such a failure. We long ago decided that the answer is YES we do want to write our library functions in such a way that an application can catch an assertion failure if its author chooses to do so. SVN_ERR_ASSERT was introduces to fulfil that need.
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.
This is an archived mail posted to the Subversion Dev mailing list.