"David Glasser" <glasser_at_davidglasser.net> writes:
> I dunno, but looking at the original code it looks like there's an
> error leak if either svn_fs_revision_prop call fails. And the call to
> svn_error_clear(err), as well as the final "return err;", seem wrong,
> since err should be guaranteed to be SVN_NO_ERROR by that point. Am I
> missing something?
You mean the existing code, before the patch? Yes, it looks wonky to me
too. Fixing that up would be a good idea, but I'm not going to attempt
it at 3am... :-)
-Karl
>> [[[
>> Improve an API by allowing a callback to be null.
>>
>> Suggested by: Neels Janosch Hofmeyr <neels_at_elego.de>
>>
>> * subversion/include/svn_repos.h
>> (svn_repos_get_commit_editor5): Document that callback can be null.
>> Also, fix up some obsolete documentation: the modern callback type
>> takes a struct instead of separate parameters.
>>
>> * subversion/libsvn_repos/commit.c
>> (close_edit): Test callback before calling.
>> ]]]
>>
>> Index: subversion/include/svn_repos.h
>> ===================================================================
>> --- subversion/include/svn_repos.h (revision 31587)
>> +++ subversion/include/svn_repos.h (working copy)
>> @@ -938,15 +938,16 @@
>> * due to authz will return SVN_ERR_AUTHZ_UNREADABLE or
>> * SVN_ERR_AUTHZ_UNWRITABLE.
>> *
>> - * Calling @a (*editor)->close_edit completes the commit. Before
>> - * @c close_edit returns, but after the commit has succeeded, it will
>> - * invoke @a callback with the new revision number, the commit date (as a
>> - * <tt>const char *</tt>), commit author (as a <tt>const char *</tt>), and
>> - * @a callback_baton as arguments. If @a callback returns an error, that
>> - * error will be returned from @c close_edit, otherwise if there was a
>> - * post-commit hook failure, then that error will be returned and will
>> - * have code SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED.
>> + * Calling @a (*editor)->close_edit completes the commit.
>> *
>> + * If @a callback is non-NULL, then before @c close_edit returns (but
>> + * after the commit has succeeded) @c close_edit will invoke
>> + * @a callback with a filled-in @c svn_commit_info_t *, @a callback_baton,
>> + * and @a pool or some subpool thereof as arguments. If @a callback
>> + * returns an error, that error will be returned from @c close_edit,
>> + * otherwise if there was a post-commit hook failure, then that error
>> + * will be returned with code SVN_ERR_REPOS_POST_COMMIT_HOOK_FAILED.
>> + *
>> * Calling @a (*editor)->abort_edit aborts the commit, and will also
>> * abort the commit transaction unless @a txn was supplied (not @c
>> * NULL). Callers who supply their own transactions are responsible
>> Index: subversion/libsvn_repos/commit.c
>> ===================================================================
>> --- subversion/libsvn_repos/commit.c (revision 31587)
>> +++ subversion/libsvn_repos/commit.c (working copy)
>> @@ -713,7 +713,7 @@
>> new_revision, SVN_PROP_REVISION_AUTHOR,
>> pool);
>>
>> - if (! err2)
>> + if (eb->commit_callback && (! err2))
>> {
>> commit_info = svn_create_commit_info(pool);
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
>> For additional commands, e-mail: dev-help_at_subversion.tigris.org
>>
>>
>
>
>
> --
> David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-06-05 08:45:56 CEST