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 *