You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Bert Huijben <be...@qqmail.nl> on 2013/05/13 14:48:15 UTC
RE: svn commit: r1481827 - /subversion/trunk/subversion/libsvn_fs/fs-loader.c
> -----Original Message-----
> From: danielsh@apache.org [mailto:danielsh@apache.org]
> Sent: maandag 13 mei 2013 14:43
> To: commits@subversion.apache.org
> Subject: svn commit: r1481827 - /subversion/trunk/subversion/libsvn_fs/fs-
> loader.c
>
> Author: danielsh
> Date: Mon May 13 12:42:57 2013
> New Revision: 1481827
>
> URL: http://svn.apache.org/r1481827
> Log:
> * subversion/libsvn_fs/fs-loader.c
> (default_warning_func): Try and print something anyway before abort()ing.
>
> Modified:
> subversion/trunk/subversion/libsvn_fs/fs-loader.c
>
> Modified: subversion/trunk/subversion/libsvn_fs/fs-loader.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/fs-
> loader.c?rev=1481827&r1=1481826&r2=1481827&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_fs/fs-loader.c (original)
> +++ subversion/trunk/subversion/libsvn_fs/fs-loader.c Mon May 13 12:42:57
> 2013
> @@ -373,7 +373,12 @@ default_warning_func(void *baton, svn_er
> {
> /* The one unforgiveable sin is to fail silently. Dumping to stderr
> or /dev/tty is not acceptable default behavior for server
> - processes, since those may both be equivalent to /dev/null. */
> + processes, since those may both be equivalent to /dev/null.
> +
> + That said, be a good citizen and print something anyway, in case it goes
> + somewhere.
> + */
> + svn_handle_error2(err, stderr, FALSE /* fatal */, "svn: fs-loader: ");
> SVN_ERR_MALFUNCTION_NO_RETURN();
-0.5
This should be part of 'svn', not libsvn_<something>, by installing a warning function.
(At least not in non maintainer builds)
The proper way to handle errors is to install a callback. Even a malfunction-no-return is catchable for our users and a library should *never* just try to do something, to ease debugging.
SVN_ERR_MALFUNCTION_NO_RETURN() is no abort. It is a callback that can be handled (and then continue) via a jump or something like a C++ exception.
Bert