artag...@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