Author: rhuijben
Date: Wed Aug 4 22:20:30 2010
New Revision: 982415
URL: http://svn.apache.org/viewvc?rev=982415&view=rev
Log:
Following up on r982398, fix a few more mostly theoretical error leaks.
* subversion/libsvn_ra_serf/commit.c
(create_proppatch_body): Explicitly clear result from
svn_ra_serf__walk_all_props.
* subversion/libsvn_ra_serf/replay.c
(start_replay): Handle errors.
* subversion/libsvn_ra_serf/serf.c
(svn_ra_serf__rev_proplist,
svn_ra_serf__stat
svn_ra_serf__get_dir): Handle errors.
* subversion/libsvn_ra_serf/update.c
(close_dir
handle_fetch,
handle_propchange_only): Handle errors.
Modified:
subversion/trunk/subversion/libsvn_ra_serf/commit.c
subversion/trunk/subversion/libsvn_ra_serf/replay.c
subversion/trunk/subversion/libsvn_ra_serf/serf.c
subversion/trunk/subversion/libsvn_ra_serf/update.c
Modified: subversion/trunk/subversion/libsvn_ra_serf/commit.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/commit.c?rev=982415&r1=982414&r2=982415&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/commit.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/commit.c Wed Aug 4 22:20:30 2010
@@ -748,6 +748,7 @@ create_proppatch_body(void *baton,
{
proppatch_context_t *ctx = baton;
serf_bucket_t *body_bkt;
+ svn_error_t *err;
body_bkt = serf_bucket_aggregate_create(alloc);
@@ -764,9 +765,10 @@ create_proppatch_body(void *baton,
svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:set", NULL);
svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:prop", NULL);
- svn_ra_serf__walk_all_props(ctx->changed_props, ctx->path,
- SVN_INVALID_REVNUM,
- proppatch_walker, body_bkt, pool);
+ err = svn_ra_serf__walk_all_props(ctx->changed_props, ctx->path,
+ SVN_INVALID_REVNUM,
+ proppatch_walker, body_bkt, pool);
+ svn_error_clear(err); /* ### */
svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:prop");
svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:set");
@@ -777,9 +779,10 @@ create_proppatch_body(void *baton,
svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:remove", NULL);
svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:prop", NULL);
- svn_ra_serf__walk_all_props(ctx->removed_props, ctx->path,
- SVN_INVALID_REVNUM,
- proppatch_walker, body_bkt, pool);
+ err = svn_ra_serf__walk_all_props(ctx->removed_props, ctx->path,
+ SVN_INVALID_REVNUM,
+ proppatch_walker, body_bkt, pool);
+ svn_error_clear(err); /* ### */
svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:prop");
svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:remove");
Modified: subversion/trunk/subversion/libsvn_ra_serf/replay.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/replay.c?rev=982415&r1=982414&r2=982415&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/replay.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/replay.c Wed Aug 4 22:20:30 2010
@@ -183,9 +183,10 @@ start_replay(svn_ra_serf__xml_parser_t *
/* Create a pool for the commit editor. */
ctx->dst_rev_pool = svn_pool_create(ctx->src_rev_pool);
ctx->props = apr_hash_make(ctx->dst_rev_pool);
- svn_ra_serf__walk_all_props(ctx->revs_props, ctx->report_target,
- ctx->revision, svn_ra_serf__set_bare_props,
- ctx->props, ctx->dst_rev_pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(ctx->revs_props, ctx->report_target,
+ ctx->revision,
+ svn_ra_serf__set_bare_props,
+ ctx->props, ctx->dst_rev_pool));
if (ctx->revstart_func)
{
SVN_ERR(ctx->revstart_func(ctx->revision, ctx->replay_baton,
Modified: subversion/trunk/subversion/libsvn_ra_serf/serf.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/serf.c?rev=982415&r1=982414&r2=982415&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/serf.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/serf.c Wed Aug 4 22:20:30 2010
@@ -541,8 +541,9 @@ svn_ra_serf__rev_proplist(svn_ra_session
propfind_path, rev, "0", all_props,
pool));
- svn_ra_serf__walk_all_props(props, propfind_path, rev,
- svn_ra_serf__set_bare_props, *ret_props, pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(props, propfind_path, rev,
+ svn_ra_serf__set_bare_props, *ret_props,
+ pool));
return SVN_NO_ERROR;
}
@@ -801,13 +802,13 @@ svn_ra_serf__stat(svn_ra_session_t *ra_s
return SVN_NO_ERROR;
}
else
- return err;
+ return svn_error_return(err);
}
entry = apr_pcalloc(pool, sizeof(*entry));
- svn_ra_serf__walk_all_props(props, path, fetched_rev, dirent_walker, entry,
- pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(props, path, fetched_rev, dirent_walker,
+ entry, pool));
*dirent = entry;
@@ -920,9 +921,9 @@ svn_ra_serf__get_dir(svn_ra_session_t *r
/* Check if the path is really a directory. */
SVN_ERR(resource_is_directory (props, path, revision));
- svn_ra_serf__walk_all_props(props, path, revision,
- svn_ra_serf__set_flat_props,
- *ret_props, pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(props, path, revision,
+ svn_ra_serf__set_flat_props,
+ *ret_props, pool));
}
return SVN_NO_ERROR;
Modified: subversion/trunk/subversion/libsvn_ra_serf/update.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/update.c?rev=982415&r1=982414&r2=982415&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/update.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/update.c Wed Aug 4 22:20:30 2010
@@ -563,17 +563,21 @@ close_dir(report_dir_t *dir)
SVN_ERR_ASSERT(! dir->ref_count);
- svn_ra_serf__walk_all_props(dir->props, dir->base_name, dir->base_rev,
- set_dir_props, dir, dir->dir_baton_pool);
-
- svn_ra_serf__walk_all_props(dir->removed_props, dir->base_name,
- dir->base_rev, remove_dir_props, dir,
- dir->dir_baton_pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(dir->props, dir->base_name,
+ dir->base_rev,
+ set_dir_props, dir,
+ dir->dir_baton_pool));
+
+ SVN_ERR(svn_ra_serf__walk_all_props(dir->removed_props, dir->base_name,
+ dir->base_rev, remove_dir_props, dir,
+ dir->dir_baton_pool));
if (dir->fetch_props)
{
- svn_ra_serf__walk_all_props(dir->props, dir->url, dir->target_rev,
- set_dir_props, dir, dir->dir_baton_pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(dir->props, dir->url,
+ dir->target_rev,
+ set_dir_props, dir,
+ dir->dir_baton_pool));
}
SVN_ERR(dir->update_editor->close_directory(dir->dir_baton,
@@ -937,23 +941,25 @@ handle_fetch(serf_request_t *request,
check_lock(info);
/* set all of the properties we received */
- svn_ra_serf__walk_all_props(info->props,
- info->base_name,
- info->base_rev,
- set_file_props,
- info, info->editor_pool);
- svn_ra_serf__walk_all_props(info->dir->removed_props,
- info->base_name,
- info->base_rev,
- remove_file_props,
- info, info->editor_pool);
- if (info->fetch_props)
+ err = svn_ra_serf__walk_all_props(info->props,
+ info->base_name,
+ info->base_rev,
+ set_file_props,
+ info, info->editor_pool);
+
+ if (!err)
+ err = svn_ra_serf__walk_all_props(info->dir->removed_props,
+ info->base_name,
+ info->base_rev,
+ remove_file_props,
+ info, info->editor_pool);
+ if (!err && info->fetch_props)
{
- svn_ra_serf__walk_all_props(info->props,
- info->url,
- info->target_rev,
- set_file_props,
- info, info->editor_pool);
+ err = svn_ra_serf__walk_all_props(info->props,
+ info->url,
+ info->target_rev,
+ set_file_props,
+ info, info->editor_pool);
}
err = info->dir->update_editor->close_file(info->file_baton,
@@ -1122,16 +1128,19 @@ handle_propchange_only(report_info_t *in
check_lock(info);
/* set all of the properties we received */
- svn_ra_serf__walk_all_props(info->props,
- info->base_name, info->base_rev,
- set_file_props, info, info->editor_pool);
- svn_ra_serf__walk_all_props(info->dir->removed_props,
- info->base_name, info->base_rev,
- remove_file_props, info, info->editor_pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(info->props,
+ info->base_name, info->base_rev,
+ set_file_props, info,
+ info->editor_pool));
+ SVN_ERR(svn_ra_serf__walk_all_props(info->dir->removed_props,
+ info->base_name, info->base_rev,
+ remove_file_props, info,
+ info->editor_pool));
if (info->fetch_props)
{
- svn_ra_serf__walk_all_props(info->props, info->url, info->target_rev,
- set_file_props, info, info->editor_pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(info->props, info->url,
+ info->target_rev, set_file_props,
+ info, info->editor_pool));
}
SVN_ERR(info->dir->update_editor->close_file(info->file_baton,
@@ -2715,8 +2724,8 @@ svn_ra_serf__get_file(svn_ra_session_t *
SVN_ERR(svn_ra_serf__retrieve_props(fetch_props, session, conn,
fetch_url,
revision, "0", all_props, pool));
- svn_ra_serf__walk_all_props(fetch_props, fetch_url, revision,
- svn_ra_serf__set_flat_props, *props, pool);
+ SVN_ERR(svn_ra_serf__walk_all_props(fetch_props, fetch_url, revision,
+ svn_ra_serf__set_flat_props, *props,
pool));
}
if (stream)