You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2017/05/19 13:38:04 UTC

svn commit: r1795612 - /subversion/trunk/subversion/libsvn_fs_fs/pack.c

Author: stefan2
Date: Fri May 19 13:38:04 2017
New Revision: 1795612

URL: http://svn.apache.org/viewvc?rev=1795612&view=rev
Log:
Fix a pool usage asymmetry in FSFS' pack code.

Suggested by: ivan

* subversion/libsvn_fs_fs/pack.c
  (initialize_pack_context): Create our temp files in the INFO_POOL context
                             just like we do in reset_pack_context.

Modified:
    subversion/trunk/subversion/libsvn_fs_fs/pack.c

Modified: subversion/trunk/subversion/libsvn_fs_fs/pack.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/pack.c?rev=1795612&r1=1795611&r2=1795612&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/pack.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/pack.c Fri May 19 13:38:04 2017
@@ -277,6 +277,12 @@ initialize_pack_context(pack_context_t *
   context->end_rev = shard_rev;
   context->shard_end_rev = shard_rev + ffd->max_files_per_dir;
 
+  /* the pool used for temp structures */
+  context->info_pool = svn_pool_create(pool);
+  context->paths = svn_prefix_tree__create(context->info_pool);
+
+  context->flush_to_disk = flush_to_disk;
+
   /* Create the new directory and pack file. */
   context->shard_dir = shard_dir;
   context->pack_file_dir = pack_file_dir;
@@ -304,15 +310,18 @@ initialize_pack_context(pack_context_t *
   context->changes = apr_array_make(pool, max_items,
                                     sizeof(svn_fs_fs__p2l_entry_t *));
   SVN_ERR(svn_io_open_unique_file3(&context->changes_file, NULL, temp_dir,
-                                   svn_io_file_del_on_close, pool, pool));
+                                   svn_io_file_del_on_close,
+                                   context->info_pool, pool));
   context->file_props = apr_array_make(pool, max_items,
                                        sizeof(svn_fs_fs__p2l_entry_t *));
   SVN_ERR(svn_io_open_unique_file3(&context->file_props_file, NULL, temp_dir,
-                                   svn_io_file_del_on_close, pool, pool));
+                                   svn_io_file_del_on_close, 
+                                   context->info_pool, pool));
   context->dir_props = apr_array_make(pool, max_items,
                                       sizeof(svn_fs_fs__p2l_entry_t *));
   SVN_ERR(svn_io_open_unique_file3(&context->dir_props_file, NULL, temp_dir,
-                                   svn_io_file_del_on_close, pool, pool));
+                                   svn_io_file_del_on_close, 
+                                   context->info_pool, pool));
 
   /* noderev and representation item bucket */
   context->rev_offsets = apr_array_make(pool, max_revs, sizeof(int));
@@ -325,12 +334,6 @@ initialize_pack_context(pack_context_t *
   SVN_ERR(svn_io_open_unique_file3(&context->reps_file, NULL, temp_dir,
                                    svn_io_file_del_on_close, pool, pool));
 
-  /* the pool used for temp structures */
-  context->info_pool = svn_pool_create(pool);
-  context->paths = svn_prefix_tree__create(context->info_pool);
-
-  context->flush_to_disk = flush_to_disk;
-
   return SVN_NO_ERROR;
 }