In our implementation of SVN_ERR_ASSERT, we do:
#define SVN_ERR_ASSERT(expr) \
do { \
if (!(expr)) \
SVN_ERR(svn_error__malfunction(TRUE, __FILE__, __LINE__, #expr)); \
} while (0)
This ends up calling svn_error_abort_on_malfunction (inside
subversion/libsvn_subr/error.c) which calls abort() indiscriminately:
svn_error_t *
svn_error_abort_on_malfunction(svn_boolean_t can_return,
const char *file, int line,
const char *expr)
{
svn_error_t *err = svn_error_raise_on_malfunction(TRUE, file, line,
expr);
svn_handle_error2(err, stderr, FALSE, "svn: ");
abort();
return err; /* Not reached. */
}
Wouldn't this abort() regardless of maintainer-mode?
Shouldn't there be some difference between maintainer-mode and production?
Am I missing something here?
Regards,
Arwin Arni