gstein_at_apache.org wrote on Tue, Apr 24, 2012 at 23:33:24 -0000:
> Author: gstein
> Date: Tue Apr 24 23:33:23 2012
> New Revision: 1330058
>
> URL: http://svn.apache.org/viewvc?rev=1330058&view=rev
> Log:
> Rejigger how FS editors are completed and how the commit process works.
>
> Modified: subversion/trunk/subversion/libsvn_fs/editor.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs/editor.c?rev=1330058&r1=1330057&r2=1330058&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/libsvn_fs/editor.c (original)
> +++ subversion/trunk/subversion/libsvn_fs/editor.c Tue Apr 24 23:33:23 2012
> @@ -38,8 +38,8 @@ struct edit_baton {
> /* The transaction associated with this editor. */
> svn_fs_txn_t *txn;
>
> - /* Should the transaction be committed when complete_cb() is invoked? */
> - svn_boolean_t autocommit;
> + /* Has this editor been completed? */
> + svn_boolean_t completed;
>
> /* We sometimes need the cancellation beyond what svn_editor_t provides */
> svn_cancel_func_t cancel_func;
> @@ -326,15 +326,17 @@ complete_cb(void *baton,
> {
> struct edit_baton *eb = baton;
>
> + /* Watch out for a following call to svn_fs_editor_commit(). Note that
> + we are likely here because svn_fs_editor_commit() was called, and it
> + invoked svn_editor_complete(). */
> + eb->completed = TRUE;
> +
The code doesn't prevent people from calling svn_editor_complete() twice
when the second call is not via svn_fs_editor_commit(), but the
docstring says it would error in that case.
(Nice handling of all the various branches in svn_fs_editor_commit(),
BTW. Tricky code.)
Received on 2012-04-25 13:29:16 CEST