--On Saturday, January 11, 2003 3:35 PM -0600 Karl Fogel
<kfogel@newton.ch.collab.net> wrote:
> Ooh, yah. Justin, maybe just attach what you have to the issue?
> (If it differs from the attachment already there.)
Grr. It doesn't *look* wrapped, but I guess it is. *sigh*
Regardless, I believe patches shouldn't be attached to issues because
there isn't a good way to version them. (Yes, it is newer than what
is attached to the issue.) I can't attach the file either because no
one can read Mac-ended files. I just can't win. Let me try again.
-- justin
Index: subversion/include/svn_repos.h
===================================================================
--- subversion/include/svn_repos.h (revision 4346)
+++ subversion/include/svn_repos.h (working copy)
@@ -176,7 +176,8 @@
(useful when creating a txn, for example). */
svn_error_t *svn_repos_set_path (void *report_baton,
const char *path,
- svn_revnum_t revision);
+ svn_revnum_t revision,
+ apr_pool_t *pool);
/* Given a REPORT_BATON constructed by svn_repos_begin_report(), this
Index: subversion/include/svn_ra.h
===================================================================
--- subversion/include/svn_ra.h (revision 4346)
+++ subversion/include/svn_ra.h (working copy)
@@ -132,7 +132,8 @@
*/
svn_error_t *(*set_path) (void *report_baton,
const char *path,
- svn_revnum_t revision);
+ svn_revnum_t revision,
+ apr_pool_t *pool);
/** Describing a working copy @a path as missing. */
svn_error_t *(*delete_path) (void *report_baton,
Index: subversion/libsvn_fs/tree.c
===================================================================
--- subversion/libsvn_fs/tree.c (revision 4346)
+++ subversion/libsvn_fs/tree.c (working copy)
@@ -451,12 +451,12 @@
trail_t *trail)
{
svn_fs_t *fs = root->fs;
- apr_pool_t *pool = trail->pool;
+ apr_pool_t *pool = trail->scratchpool;
const svn_fs_id_t *id;
dag_node_t *here; /* The directory we're currently looking at. */
parent_path_t *parent_path; /* The path from HERE up to the root.
*/
const char *rest; /* The portion of PATH we haven't traversed yet.
*/
- const char *canon_path = svn_fs__canonicalize_abspath (path,
trail->pool);
+ const char *canon_path = svn_fs__canonicalize_abspath (path, pool);
/* Make a parent_path item for the root node, using its own current
copy id. */
@@ -680,7 +680,7 @@
trail_t *trail)
{
dag_node_t *clone;
- const char *txn_id = svn_fs_txn_root_name (root, trail->pool);
+ const char *txn_id = svn_fs_txn_root_name (root,
trail->scratchpool);
svn_fs_t *fs = svn_fs_root_fs (root);
/* Is the node mutable already? */
@@ -791,7 +791,7 @@
trail_t *trail)
{
svn_fs__change_t change;
- change.path = svn_fs__canonicalize_abspath (path, trail->pool);
+ change.path = svn_fs__canonicalize_abspath (path,
trail->scratchpool);
change.noderev_id = noderev_id;
change.kind = change_kind;
change.text_mod = text_mod;
@@ -2446,7 +2446,6 @@
/* Directories. */
-
struct dir_entries_args
{
apr_hash_t **table_p;
@@ -2454,6 +2453,34 @@
const char *path;
};
+static apr_hash_t *
+copy_dir_entries_hash(apr_hash_t *entries, apr_pool_t *entries_pool,
+ apr_pool_t *pool)
+{
+ apr_hash_t *new_entries = apr_hash_make(pool);
+ apr_hash_index_t *hi;
+
+ for (hi = apr_hash_first(entries_pool, entries); hi;
+ hi = apr_hash_next(hi)) {
+ const svn_fs_dirent_t *entry;
+ svn_fs_dirent_t *new_entry;
+ const void *key;
+ void *value;
+ apr_ssize_t klen;
+
+ apr_hash_this(hi, &key, &klen, &value);
+ entry = (const svn_fs_dirent_t*)value;
+
+ new_entry = apr_palloc(pool, sizeof(svn_fs_dirent_t));
+ new_entry->name = apr_pstrmemdup(pool, entry->name, klen);
+ new_entry->id = svn_fs__id_copy(entry->id, pool);
+
+ apr_hash_set(new_entries, new_entry->name, klen, new_entry);
+ }
+
+ return new_entries;
+}
+
static svn_error_t *
txn_body_dir_entries (void *baton,
@@ -2469,7 +2496,13 @@
SVN_ERR (svn_fs__dag_dir_entries (&entries, parent_path->node,
trail));
/* Potentially initialize the return value to an empty hash. */
- *args->table_p = entries ? entries : apr_hash_make (trail->pool);
+ if (entries) {
+ *args->table_p = copy_dir_entries_hash(entries,
trail->scratchpool,
+ trail->pool);
+ }
+ else {
+ *args->table_p = apr_hash_make (trail->pool);
+ }
return SVN_NO_ERROR;
}
@@ -2690,7 +2723,7 @@
if (svn_fs_is_revision_root (from_root))
{
svn_fs_path_change_kind_t kind;
- const char *txn_id = svn_fs_txn_root_name (to_root,
trail->pool);
+ const char *txn_id = svn_fs_txn_root_name (to_root,
trail->scratchpool);
dag_node_t *new_node;
/* If TO_PATH already existed prior to the copy, note that this
Index: subversion/libsvn_fs/reps-strings.c
===================================================================
--- subversion/libsvn_fs/reps-strings.c (revision 4346)
+++ subversion/libsvn_fs/reps-strings.c (working copy)
@@ -47,7 +47,7 @@
/* The MD5 digest for the empty string. */
-static const char empty_digest[] = {
+static const unsigned char empty_digest[] = {
212, 29, 140, 217, 143, 0, 178, 4, 233, 128, 9, 152, 236, 248, 66,
126
};
@@ -729,7 +729,7 @@
char *data;
SVN_ERR (svn_fs__rep_contents_size (&(str->len), fs, rep_key,
trail));
- data = apr_palloc (trail->pool, str->len);
+ data = apr_palloc (trail->scratchpool, str->len);
str->data = data;
len = str->len;
SVN_ERR (rep_read_range (fs, rep_key, 0, data, &len, trail));
@@ -757,8 +757,8 @@
"svn_fs__rep_contents: checksum mismatch on rep \"%s\":\n"
" expected: %s\n"
" actual: %s\n", rep_key,
- svn_cstring_from_md5_digest (rep->checksum, trail->pool),
- svn_cstring_from_md5_digest (checksum, trail->pool));
+ svn_cstring_from_md5_digest (rep->checksum,
trail->scratchpool),
+ svn_cstring_from_md5_digest (checksum, trail->scratchpool));
}
return SVN_NO_ERROR;
Index: subversion/libsvn_fs/bdb/reps-table.c
===================================================================
--- subversion/libsvn_fs/bdb/reps-table.c (revision 4346)
+++ subversion/libsvn_fs/bdb/reps-table.c (working copy)
@@ -82,7 +82,7 @@
svn_fs__str_to_dbt (&query, (char *) key),
svn_fs__result_dbt (&result), 0);
- svn_fs__track_dbt (&result, trail->pool);
+ svn_fs__track_dbt (&result, trail->scratchpool);
/* If there's no such node, return an appropriately specific
error. */
if (db_err == DB_NOTFOUND)
@@ -94,10 +94,10 @@
SVN_ERR (BDB_WRAP (fs, "reading representation", db_err));
/* Parse the REPRESENTATION skel. */
- skel = svn_fs__parse_skel (result.data, result.size, trail->pool);
+ skel = svn_fs__parse_skel (result.data, result.size,
trail->scratchpool);
/* Convert to a native type. */
- SVN_ERR (svn_fs__parse_representation_skel (rep_p, skel,
trail->pool));
+ SVN_ERR (svn_fs__parse_representation_skel (rep_p, skel,
trail->scratchpool));
return SVN_NO_ERROR;
}
@@ -113,14 +113,16 @@
skel_t *skel;
/* Convert from native type to skel. */
- SVN_ERR (svn_fs__unparse_representation_skel (&skel, rep,
trail->pool));
+ SVN_ERR (svn_fs__unparse_representation_skel (&skel, rep,
+ trail->scratchpool));
/* Now write the record. */
SVN_ERR (BDB_WRAP (fs, "storing representation",
fs->representations->put
(fs->representations, trail->db_txn,
svn_fs__str_to_dbt (&query, (char *) key),
- svn_fs__skel_to_dbt (&result, skel,
trail->pool), 0)));
+ svn_fs__skel_to_dbt (&result, skel,
+ trail->scratchpool), 0)));
return SVN_NO_ERROR;
}
@@ -149,10 +151,10 @@
svn_fs__result_dbt
(&result),
0)));
- svn_fs__track_dbt (&result, trail->pool);
+ svn_fs__track_dbt (&result, trail->scratchpool);
/* Store the new rep. */
- *key = apr_pstrmemdup (trail->pool, result.data, result.size);
+ *key = apr_pstrmemdup (trail->scratchpool, result.data,
result.size);
SVN_ERR (svn_fs__bdb_write_rep (fs, *key, rep, trail));
/* Bump to future key. */
Index: subversion/libsvn_fs/bdb/copies-table.c
===================================================================
--- subversion/libsvn_fs/bdb/copies-table.c (revision 4346)
+++ subversion/libsvn_fs/bdb/copies-table.c (working copy)
@@ -74,12 +74,12 @@
DBT key, value;
/* Convert native type to skel. */
- SVN_ERR (svn_fs__unparse_copy_skel (©_skel, copy,
trail->pool));
+ SVN_ERR (svn_fs__unparse_copy_skel (©_skel, copy,
trail->scratchpool));
/* Only in the context of this function do we know that the DB call
will not attempt to modify COPY_ID, so the cast belongs here.
*/
svn_fs__str_to_dbt (&key, (char *) copy_id);
- svn_fs__skel_to_dbt (&value, copy_skel, trail->pool);
+ svn_fs__skel_to_dbt (&value, copy_skel, trail->scratchpool);
SVN_ERR (BDB_WRAP (fs, "storing copy record",
fs->copies->put (fs->copies, trail->db_txn,
&key, &value, 0)));
@@ -106,10 +106,10 @@
fs->copies->get (fs->copies, trail->db_txn,
&query, svn_fs__result_dbt
(&result),
0)));
- svn_fs__track_dbt (&result, trail->pool);
+ svn_fs__track_dbt (&result, trail->scratchpool);
/* Set our return value. */
- *id_p = apr_pstrmemdup (trail->pool, result.data, result.size);
+ *id_p = apr_pstrmemdup (trail->scratchpool, result.data,
result.size);
/* Bump to future key. */
len = result.size;
Index: subversion/libsvn_fs/bdb/changes-table.c
===================================================================
--- subversion/libsvn_fs/bdb/changes-table.c (revision 4346)
+++ subversion/libsvn_fs/bdb/changes-table.c (working copy)
@@ -73,11 +73,11 @@
skel_t *skel;
/* Convert native type to skel. */
- SVN_ERR (svn_fs__unparse_change_skel (&skel, change, trail->pool));
+ SVN_ERR (svn_fs__unparse_change_skel (&skel, change,
trail->scratchpool));
/* Store a new record into the database. */
svn_fs__str_to_dbt (&query, (char *) key);
- svn_fs__skel_to_dbt (&value, skel, trail->pool);
+ svn_fs__skel_to_dbt (&value, skel, trail->scratchpool);
SVN_ERR (BDB_WRAP (fs, "creating change",
fs->changes->put (fs->changes, trail->db_txn,
&query, &value, 0)));
Index: subversion/libsvn_fs/bdb/nodes-table.c
===================================================================
--- subversion/libsvn_fs/bdb/nodes-table.c (revision 4346)
+++ subversion/libsvn_fs/bdb/nodes-table.c (working copy)
@@ -98,7 +98,7 @@
svn_fs__track_dbt (&result, trail->pool);
/* Squirrel away our next node id value. */
- next_node_id = apr_pstrmemdup (trail->pool, result.data,
result.size);
+ next_node_id = apr_pstrmemdup (trail->scratchpool, result.data,
result.size);
/* Bump to future key. */
len = result.size;
@@ -134,14 +134,14 @@
new_id = svn_fs__create_id (svn_fs__id_node_id (id),
copy_id ? copy_id : svn_fs__id_copy_id
(id),
txn_id,
- trail->pool);
+ trail->scratchpool);
/* Now, make sure this NEW_ID doesn't already exist in FS. */
err = svn_fs__bdb_get_node_revision (NULL, fs, new_id, trail);
if ((! err) || (err->apr_err != SVN_ERR_FS_ID_NOT_FOUND))
{
- svn_string_t *id_str = svn_fs_unparse_id (id, trail->pool);
- svn_string_t *new_id_str = svn_fs_unparse_id (new_id,
trail->pool);
+ svn_string_t *id_str = svn_fs_unparse_id (id,
trail->scratchpool);
+ svn_string_t *new_id_str = svn_fs_unparse_id (new_id,
trail->scratchpool);
return svn_error_createf
(SVN_ERR_FS_ALREADY_EXISTS, err,
"successor id `%s' (for `%s') already exists in filesystem
%s",
@@ -190,10 +190,10 @@
DBT key, value;
db_err = fs->nodes->get (fs->nodes, trail->db_txn,
- svn_fs__id_to_dbt (&key, id, trail->pool),
+ svn_fs__id_to_dbt (&key, id,
trail->scratchpool),
svn_fs__result_dbt (&value),
0);
- svn_fs__track_dbt (&value, trail->pool);
+ svn_fs__track_dbt (&value, trail->scratchpool);
/* If there's no such node, return an appropriately specific
error. */
if (db_err == DB_NOTFOUND)
@@ -208,10 +208,11 @@
return SVN_NO_ERROR;
/* Parse and the NODE-REVISION skel. */
- skel = svn_fs__parse_skel (value.data, value.size, trail->pool);
+ skel = svn_fs__parse_skel (value.data, value.size,
trail->scratchpool);
/* Convert to a native FS type. */
- SVN_ERR (svn_fs__parse_node_revision_skel (&noderev, skel,
trail->pool));
+ SVN_ERR (svn_fs__parse_node_revision_skel (&noderev, skel,
+ trail->scratchpool));
*noderev_p = noderev;
return SVN_NO_ERROR;
}
@@ -224,7 +225,7 @@
trail_t *trail)
{
DB_TXN *db_txn = trail->db_txn;
- apr_pool_t *pool = trail->pool;
+ apr_pool_t *pool = trail->scratchpool;
DBT key, value;
skel_t *skel;
Index: subversion/libsvn_fs/trail.c
===================================================================
--- subversion/libsvn_fs/trail.c (revision 4346)
+++ subversion/libsvn_fs/trail.c (working copy)
@@ -158,7 +158,8 @@
void *baton,
int when)
{
- struct undo *undo = apr_pcalloc (trail->pool, sizeof (*undo));
+ /* The undo structure is guaranteed to live as long as the
scratchpool. */
+ struct undo *undo = apr_pcalloc (trail->scratchpool, sizeof
(*undo));
undo->when = when;
undo->func = func;
Index: subversion/libsvn_fs/dag.c
===================================================================
--- subversion/libsvn_fs/dag.c (revision 4346)
+++ subversion/libsvn_fs/dag.c (working copy)
@@ -421,7 +421,7 @@
svn_fs__node_revision_t *noderev,
trail_t *trail)
{
- apr_hash_t *entries = apr_hash_make (trail->pool);
+ apr_hash_t *entries = NULL;
apr_hash_index_t *hi;
svn_string_t entries_raw;
skel_t *entries_skel;
@@ -439,12 +439,12 @@
SVN_ERR (svn_fs__rep_contents (&entries_raw, fs,
noderev->data_key, trail));
entries_skel = svn_fs__parse_skel (entries_raw.data,
entries_raw.len,
- trail->pool);
+ trail->scratchpool);
/* Were there entries? Make a hash from them. */
if (entries_skel)
SVN_ERR (svn_fs__parse_entries_skel (&entries, entries_skel,
- trail->pool));
+ trail->scratchpool));
}
/* No hash? No problem. */
@@ -453,22 +453,24 @@
return SVN_NO_ERROR;
/* Else, convert the hash from a name->id mapping to a
name->dirent one. */
- *entries_p = apr_hash_make (trail->pool);
- for (hi = apr_hash_first (trail->pool, entries); hi; hi =
apr_hash_next (hi))
+ for (hi = apr_hash_first (trail->scratchpool, entries); hi;
+ hi = apr_hash_next (hi))
{
const void *key;
apr_ssize_t klen;
void *val;
- svn_fs_dirent_t *dirent = apr_palloc (trail->pool, sizeof
(*dirent));
-
+ svn_fs_dirent_t *dirent = apr_palloc (trail->scratchpool,
+ sizeof (*dirent));
+
/* KEY will be the entry name in ancestor, VAL the id. */
apr_hash_this (hi, &key, &klen, &val);
dirent->name = (char *) key;
dirent->id = val;
- apr_hash_set (*entries_p, key, klen, (void *) dirent);
+ apr_hash_set (entries, key, klen, (void *) dirent);
}
/* Return our findings. */
+ *entries_p = entries;
return SVN_NO_ERROR;
}
@@ -487,8 +489,16 @@
svn_fs_dirent_t *dirent;
SVN_ERR (svn_fs__dag_dir_entries (&entries, parent, trail));
- if (entries)
+ if (entries) {
dirent = apr_hash_get (entries, name, APR_HASH_KEY_STRING);
+ if (dirent) {
+ svn_fs_dirent_t *local_dirent;
+ local_dirent = apr_palloc(trail->pool,
sizeof(svn_fs_dirent_t));
+ local_dirent->name = apr_pstrdup(trail->pool, dirent->name);
+ local_dirent->id = svn_fs__id_copy(dirent->id, trail->pool);
+ dirent = local_dirent;
+ }
+ }
else
dirent = NULL;
@@ -697,7 +707,7 @@
SVN_ERR (svn_fs__rep_contents (&raw_proplist, svn_fs__dag_get_fs
(node),
noderev->prop_key, trail));
proplist_skel = svn_fs__parse_skel (raw_proplist.data,
raw_proplist.len,
- trail->pool);
+ trail->scratchpool);
if (proplist_skel)
SVN_ERR (svn_fs__parse_proplist_skel (&proplist, proplist_skel,
trail->pool));
@@ -1461,14 +1471,14 @@
/* Make a copy of the original node revision. */
SVN_ERR (get_node_revision (&from_noderev, from_node, trail));
- to_noderev = copy_node_revision (from_noderev, trail->pool);
+ to_noderev = copy_node_revision (from_noderev,
trail->scratchpool);
/* Reserve a copy ID for this new copy. */
SVN_ERR (svn_fs__bdb_reserve_copy_id (©_id, fs, trail));
/* Create a successor with its predecessor pointing at the copy
source. */
- to_noderev->predecessor_id = svn_fs__id_copy (src_id,
trail->pool);
+ to_noderev->predecessor_id = svn_fs__id_copy (src_id,
trail->scratchpool);
if (to_noderev->predecessor_count != -1)
to_noderev->predecessor_count++;
SVN_ERR (svn_fs__create_successor (&id, fs, src_id, to_noderev,
@@ -1482,7 +1492,7 @@
reserved above. */
SVN_ERR (svn_fs__bdb_create_copy
(copy_id, fs,
- svn_fs__canonicalize_abspath (from_path,
trail->pool),
+ svn_fs__canonicalize_abspath (from_path,
trail->scratchpool),
from_txn_id, id, trail));
/* Finally, add the COPY_ID to the transaction's list of copies
Index: subversion/libsvn_fs/util/fs_skels.c
===================================================================
--- subversion/libsvn_fs/util/fs_skels.c (revision 4346)
+++ subversion/libsvn_fs/util/fs_skels.c (working copy)
@@ -520,6 +520,7 @@
chunk = apr_palloc (pool, sizeof (*chunk));
/* Populate the window */
+ /* XXX: These apr_pstrmemdup's are probably superfluous. */
chunk->version
= (apr_byte_t) atoi (apr_pstrmemdup
(pool,
Index: subversion/libsvn_wc/adm_crawler.c
===================================================================
--- subversion/libsvn_wc/adm_crawler.c (revision 4346)
+++ subversion/libsvn_wc/adm_crawler.c (working copy)
@@ -128,7 +131,7 @@
{
apr_hash_t *entries, *dirents;
apr_hash_index_t *hi;
- apr_pool_t *subpool = svn_pool_create (pool);
+ apr_pool_t *subpool = svn_pool_create (pool), *child_subpool;
const svn_wc_entry_t *dot_entry;
const char *this_url, *this_path, *this_full_path;
svn_wc_adm_access_t *dir_access;
@@ -177,6 +180,8 @@
}
/* Looping over current directory's SVN entries: */
+ child_subpool = svn_pool_create(subpool);
+
for (hi = apr_hash_first (subpool, entries); hi; hi =
apr_hash_next (hi))
{
const void *key;
@@ -201,14 +206,18 @@
It needs a more thorough rewrite, but for now we paper it
over with a terrifyingly ugly kluge. */
- svn_stringbuf_t *this_path_s = svn_stringbuf_create
(this_path, pool);
- svn_stringbuf_t *dir_path_s = svn_stringbuf_create
(dir_path, pool);
- svn_stringbuf_t *full_path_s = svn_stringbuf_create
(full_path, pool);
+ svn_stringbuf_t *this_path_s = svn_stringbuf_create
(this_path,
+
child_subpool);
+ svn_stringbuf_t *dir_path_s = svn_stringbuf_create (dir_path,
+
child_subpool);
+ svn_stringbuf_t *full_path_s = svn_stringbuf_create
(full_path,
+
child_subpool);
svn_stringbuf_t *this_full_path_s
- = svn_stringbuf_create (this_full_path, pool);
- svn_stringbuf_t *this_url_s = svn_stringbuf_create
(this_url, pool);
+ = svn_stringbuf_create (this_full_path, child_subpool);
+ svn_stringbuf_t *this_url_s = svn_stringbuf_create (this_url,
+
child_subpool);
svn_stringbuf_t *dot_entry_url_s
- = svn_stringbuf_create (dot_entry->url, pool);
+ = svn_stringbuf_create (dot_entry->url, child_subpool);
if (this_path_s->len > dir_path_s->len)
svn_stringbuf_chop (this_path_s, this_path_s->len -
dir_path_s->len);
@@ -221,7 +230,7 @@
svn_path_add_component (this_path_s, key);
svn_path_add_component (this_full_path_s, key);
svn_path_add_component (this_url_s,
- svn_path_uri_encode (key, pool));
+ svn_path_uri_encode (key,
child_subpool));
this_path = this_path_s->data;
this_full_path = this_full_path_s->data;
@@ -264,7 +273,8 @@
&& (current_entry->schedule !=
svn_wc_schedule_replace))
{
/* Recreate file from text-base. */
- SVN_ERR (restore_file (this_full_path, dir_access,
pool));
+ SVN_ERR (restore_file (this_full_path, dir_access,
+ child_subpool));
/* Report the restoration to the caller. */
if (notify_func != NULL)
@@ -291,7 +301,8 @@
else if (current_entry->revision != dir_rev)
SVN_ERR (reporter->set_path (report_baton,
this_path,
- current_entry->revision));
+ current_entry->revision,
+ child_subpool));
}
else if (current_entry->kind == svn_node_dir && recurse)
@@ -322,9 +333,9 @@
/* We need to read the full entry of the directory from its
own "this dir", if available. */
SVN_ERR (svn_wc_adm_retrieve (&subdir_access, adm_access,
- this_full_path, subpool));
+ this_full_path,
child_subpool));
SVN_ERR (svn_wc_entry (&subdir_entry, this_full_path,
subdir_access,
- TRUE, subpool));
+ TRUE, child_subpool));
/* Possibly report a disjoint URL... */
if (strcmp (subdir_entry->url, this_url) != 0)
@@ -336,7 +347,8 @@
else if (subdir_entry->revision != dir_rev)
SVN_ERR (reporter->set_path (report_baton,
this_path,
- subdir_entry->revision));
+ subdir_entry->revision,
+ child_subpool));
/* Recurse. */
SVN_ERR (report_revisions (adm_access, this_path,
@@ -345,9 +357,10 @@
notify_func, notify_baton,
restore_files, recurse,
traversal_info,
- subpool));
+ child_subpool));
} /* end directory case */
+ svn_pool_clear (child_subpool);
} /* end main entries loop */
/* We're done examining this dir's entries, so free everything. */
@@ -398,7 +411,7 @@
/* The first call to the reporter merely informs it that the
top-level directory being updated is at BASE_REV. Its PATH
argument is ignored. */
- SVN_ERR (reporter->set_path (report_baton, "", base_rev));
+ SVN_ERR (reporter->set_path (report_baton, "", base_rev, pool));
if (entry->schedule != svn_wc_schedule_delete)
{
@@ -489,7 +502,7 @@
of the report (not some file in a subdirectory of a
target
directory), and that target is a file, we need to pass
an
empty string to set_path. */
- err = reporter->set_path (report_baton, "", base_rev);
+ err = reporter->set_path (report_baton, "", base_rev,
pool);
if (err)
goto abort_report;
}
Index: subversion/libsvn_ra_local/ra_plugin.c
===================================================================
--- subversion/libsvn_ra_local/ra_plugin.c (revision 4346)
+++ subversion/libsvn_ra_local/ra_plugin.c (working copy)
@@ -120,10 +120,11 @@
static svn_error_t *
reporter_set_path (void *reporter_baton,
const char *path,
- svn_revnum_t revision)
+ svn_revnum_t revision,
+ apr_pool_t *pool)
{
reporter_baton_t *rbaton = reporter_baton;
- return svn_repos_set_path (rbaton->report_baton, path, revision);
+ return svn_repos_set_path (rbaton->report_baton, path, revision,
pool);
}
Index: subversion/libsvn_client/diff.c
===================================================================
--- subversion/libsvn_client/diff.c (revision 4346)
+++ subversion/libsvn_client/diff.c (working copy)
@@ -767,7 +767,7 @@
URL2,
diff_editor, diff_edit_baton));
- SVN_ERR (reporter->set_path (report_baton, "", start_revnum));
+ SVN_ERR (reporter->set_path (report_baton, "", start_revnum,
pool));
SVN_ERR (reporter->finish_report (report_baton));
@@ -1219,7 +1219,7 @@
URL2,
diff_editor, diff_edit_baton));
- SVN_ERR (reporter->set_path (report_baton, "", start_revnum));
+ SVN_ERR (reporter->set_path (report_baton, "", start_revnum,
pool));
SVN_ERR (reporter->finish_report (report_baton));
SVN_ERR (ra_lib->close (session2));
Index: subversion/mod_dav_svn/update.c
===================================================================
--- subversion/mod_dav_svn/update.c (revision 4346)
+++ subversion/mod_dav_svn/update.c (working copy)
@@ -748,7 +748,7 @@
path = dav_xml_get_cdata(child, resource->pool, 1);
if (! linkpath)
- serr = svn_repos_set_path(rbaton, path, rev);
+ serr = svn_repos_set_path(rbaton, path, rev,
resource->pool);
else
serr = svn_repos_link_path(rbaton, path, linkpath,
rev);
if (serr != NULL)
Index: subversion/libsvn_repos/reporter.c
===================================================================
--- subversion/libsvn_repos/reporter.c (revision 4346)
+++ subversion/libsvn_repos/reporter.c (working copy)
@@ -146,7 +146,8 @@
svn_error_t *
svn_repos_set_path (void *report_baton,
const char *path,
- svn_revnum_t revision)
+ svn_revnum_t revision,
+ apr_pool_t *pool)
{
svn_repos_report_baton_t *rbaton = report_baton;
svn_revnum_t *rev_ptr = apr_palloc (rbaton->pool, sizeof
(*rev_ptr));
@@ -186,7 +187,7 @@
reported) + path (stuff relative to the target...this is the
empty string in the file case since the target is the file
itself, not a directory containing the file). */
- from_path = svn_path_join_many (rbaton->pool,
+ from_path = svn_path_join_many (pool,
rbaton->base_path,
rbaton->target ?
rbaton->target : path,
rbaton->target ? path : NULL,
@@ -196,19 +197,19 @@
which case we'll be linking from somewhere entirely
different. */
link_path = get_from_path_map (rbaton->linked_paths,
from_path,
- rbaton->pool);
+ pool);
/* Create the "from" root. */
SVN_ERR (svn_fs_revision_root (&from_root, rbaton->repos->fs,
- revision, rbaton->pool));
+ revision, pool));
/* Copy into our txn (use svn_fs_revision_link if we can). */
if (strcmp (link_path, from_path))
SVN_ERR (svn_fs_copy (from_root, link_path,
- rbaton->txn_root, from_path,
rbaton->pool));
+ rbaton->txn_root, from_path, pool));
else
SVN_ERR (svn_fs_revision_link (from_root, rbaton->txn_root,
- from_path, rbaton->pool));
+ from_path, pool));
}
return SVN_NO_ERROR;
Index: subversion/svnserve/serve.c
===================================================================
--- subversion/svnserve/serve.c (revision 4346)
+++ subversion/svnserve/serve.c (working copy)
@@ -75,7 +75,7 @@
svn_revnum_t rev;
SVN_ERR(svn_ra_svn_parse_tuple(params, pool, "cr", &path, &rev));
- SVN_CMD_ERR(svn_repos_set_path(b->report_baton, path, rev));
+ SVN_CMD_ERR(svn_repos_set_path(b->report_baton, path, rev, pool));
SVN_ERR(svn_ra_svn_write_cmd_response(conn, pool, ""));
return SVN_NO_ERROR;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Jan 11 23:37:58 2003