On Sun, Mar 14, 2010 at 10:36, <phi...@apache.org> wrote: >... > +++ subversion/trunk/subversion/libsvn_wc/lock.c Sun Mar 14 14:36:26 2010 > @@ -1789,8 +1789,19 @@ svn_wc__acquire_write_lock(const char ** > SVN_ERR(svn_wc__db_read_kind(&kind, wc_ctx->db, child_abspath, FALSE, > iterpool)); > if (kind == svn_wc__db_kind_dir) > - SVN_ERR(svn_wc__acquire_write_lock(NULL, wc_ctx, child_abspath, > - NULL, iterpool)); > + { > + err = svn_wc__acquire_write_lock(NULL, wc_ctx, child_abspath, NULL, > + iterpool); > + if (err && err->apr_err == SVN_ERR_WC_LOCKED) > + { > + svn_error_t *err2 = svn_wc__release_write_lock(wc_ctx, > + child_abspath, > + iterpool); > + if (err2) > + svn_error_compose(err, err2); > + return svn_error_return(err); > + } > + }
Lately, we have not been using svn_error_compose(), favoring svn_error_compose_create() since it Does The Right Thing with the args, whether they're errors or not. Thus, the above code would typically be written: svn_error_t *err2 = svn_wc__release_write_lock(...); return svn_error_return(svn_err_compose_create(err, err2)); Seeing the use of svn_error_compose() is a bit jarring :-P Cheers, -g