You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2010/03/25 11:06:24 UTC

svn commit: r927323 - /subversion/trunk/subversion/libsvn_subr/atomic.c

Author: rhuijben
Date: Thu Mar 25 10:06:24 2010
New Revision: 927323

URL: http://svn.apache.org/viewvc?rev=927323&view=rev
Log:
Return all errors from atomic initialization functions wrapped with an
SVN_ERR_ATOMIC_INIT_FAILURE error to make sure it is not just ignored
as the specific error returned from the function.

Julian identified that we just ignore sqlite initialization errors as
SVN_ERR_SQLITE_ERROR in wc_db.c if we are looking for a database. This
patch makes it unlikely that we make the same mistake in future cases.

Found by: julianf

* subversion/libsvn_subr/atomic.c
  (svn_atomic__init_once): Wrap the error returned from the initialization
    to make it hard to misidentify this error as another error.
    Note that we avoid using translated strings in this function, because
    that could cause deadlocks.

Modified:
    subversion/trunk/subversion/libsvn_subr/atomic.c

Modified: subversion/trunk/subversion/libsvn_subr/atomic.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/atomic.c?rev=927323&r1=927322&r2=927323&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/atomic.c (original)
+++ subversion/trunk/subversion/libsvn_subr/atomic.c Thu Mar 25 10:06:24 2010
@@ -51,7 +51,8 @@ svn_atomic__init_once(volatile svn_atomi
                          SVN_ATOMIC_INIT_FAILED,
                          SVN_ATOMIC_START_INIT);
 #endif
-          return err;
+          return svn_error_create(SVN_ERR_ATOMIC_INIT_FAILURE, err,
+                                  "Couldn't perform atomic initialization");
         }
       svn_atomic_cas(global_status,
                      SVN_ATOMIC_INITIALIZED,