On the sqlite-node-origins branch:

Fix pool usage in the indexing code.

* subversion/libsvn_fs_util/node-origins-sqlite-index.c
  (): Include svn_pools.h.
  (set_origin): Drop unused pool argument.
  (svn_fs__set_node_origins): Use subpool and iterpool for temporary
   data.


git-svn-id: https://svn.apache.org/repos/asf/subversion/branches/sqlite-node-origins@867963 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/subversion/libsvn_fs_util/node-origins-sqlite-index.c b/subversion/libsvn_fs_util/node-origins-sqlite-index.c
index c29d150..85ab0fa 100644
--- a/subversion/libsvn_fs_util/node-origins-sqlite-index.c
+++ b/subversion/libsvn_fs_util/node-origins-sqlite-index.c
@@ -28,6 +28,7 @@
 
 #include "svn_fs.h"
 #include "svn_path.h"
+#include "svn_pools.h"
 
 #include "private/svn_fs_sqlite.h"
 #include "private/svn_fs_node_origins.h"
@@ -73,8 +74,7 @@
 static svn_error_t *
 set_origin(sqlite3 *db,
            const char *node_id,
-           const svn_string_t *node_rev_id,
-           apr_pool_t *pool)
+           const svn_string_t *node_rev_id)
 {
   sqlite3_stmt *stmt;
   const char *old_node_rev_id;
@@ -122,12 +122,14 @@
   sqlite3 *db;
   apr_hash_index_t *hi;
   svn_error_t *err;
+  apr_pool_t *subpool = svn_pool_create(pool);
+  apr_pool_t *iterpool = svn_pool_create(subpool);
 
-  SVN_ERR(svn_fs__sqlite_open(&db, fs->path, pool));
+  SVN_ERR(svn_fs__sqlite_open(&db, fs->path, subpool));
   err = svn_fs__sqlite_exec(db, "BEGIN TRANSACTION;");
   MAYBE_CLEANUP;
 
-  for (hi = apr_hash_first(pool, node_origins);
+  for (hi = apr_hash_first(subpool, node_origins);
        hi != NULL;
        hi = apr_hash_next(hi))
     {
@@ -136,14 +138,14 @@
       const char *node_id;
       const svn_fs_id_t *node_rev_id;
 
+      svn_pool_clear(iterpool);
+
       apr_hash_this(hi, &key, NULL, &val);
       node_id = key;
       node_rev_id = val;
 
-      /* XXXdsg pool management */
-
       err = set_origin(db, node_id,
-                       svn_fs_unparse_id(node_rev_id, pool), pool);
+                       svn_fs_unparse_id(node_rev_id, iterpool));
       MAYBE_CLEANUP;
     }
 
@@ -151,7 +153,10 @@
   MAYBE_CLEANUP;
 
  cleanup:
-  return svn_fs__sqlite_close(db, err);
+  err = svn_fs__sqlite_close(db, err);
+  svn_pool_destroy(iterpool);
+  svn_pool_destroy(subpool);
+  return err;
 }
 
 svn_error_t *