[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: svn commit: r1002502 - /subversion/trunk/subversion/svnrdump/dump_editor.c

From: Daniel Shahaf <d.s_at_daniel.shahaf.name>
Date: Wed, 29 Sep 2010 09:54:49 +0200

artagnon_at_apache.org wrote on Wed, Sep 29, 2010 at 07:44:48 -0000:
> Author: artagnon
> Date: Wed Sep 29 07:44:48 2010
> New Revision: 1002502
>
> URL: http://svn.apache.org/viewvc?rev=1002502&view=rev
> Log:
> svnrdump: dump_editor: Followup r1002470 to avoid creating a toplevel
> pool by changing the function that creates the per-revision pool.
>
> * subversion/svnrdump/dump_editor.c
>
> (open_root): Don't create the per-revision pool here. Simply clear
> it after each iteration here.
>
> (get_dump_editor): Create the per-revision pool `eb->pool` here and
> make it a subpool of `pool` so that it's cleaned up when `pool` is
> cleaned up.
>
> Modified:
> subversion/trunk/subversion/svnrdump/dump_editor.c
>
> Modified: subversion/trunk/subversion/svnrdump/dump_editor.c
> URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/dump_editor.c?rev=1002502&r1=1002501&r2=1002502&view=diff
> ==============================================================================
> --- subversion/trunk/subversion/svnrdump/dump_editor.c (original)
> +++ subversion/trunk/subversion/svnrdump/dump_editor.c Wed Sep 29 07:44:48 2010
> @@ -368,11 +368,8 @@ open_root(void *edit_baton,
> {
> struct dump_edit_baton *eb = edit_baton;
>
> - /* Special toplevel per-revision pool */
> - if (eb->pool)
> - svn_pool_clear(eb->pool);
> - else
> - eb->pool = svn_pool_create(NULL);
> + /* Clear the per-revision pool after each revision */
> + svn_pool_clear(eb->pool);
>

Need to check for NULL? apr_pool_clear() docs don't bless passing NULL.

> eb->props = apr_hash_make(eb->pool);
> eb->deleted_props = apr_hash_make(eb->pool);
> @@ -852,6 +849,9 @@ get_dump_editor(const svn_delta_editor_t
> eb = apr_pcalloc(pool, sizeof(struct dump_edit_baton));
> eb->stream = stream;
>
> + /* Create a special per-revision pool */
> + eb->pool = svn_pool_create(pool);
> +

So, now the per-revision pool is a subpool of get_dump_editor()'s pool.
Okay.

> de = svn_delta_default_editor(pool);
> de->open_root = open_root;
> de->delete_entry = delete_entry;
>
>

By the way, not directly related to this commit, but do note that we've
last year started with a dual-pool paradigm (where functions take both
a result_pool and a scratch_pool); it's documented in HACKING and in
plenty of examples in new code. Please use that paradigm where
appropriate. Thanks.

Daniel
Received on 2010-09-29 09:56:13 CEST

This is an archived mail posted to the Subversion Dev mailing list.