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)


Reply via email to