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

Reply via email to