You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2011/07/22 16:18:58 UTC

svn commit: r1149612 - /subversion/trunk/subversion/libsvn_client/merge.c

Author: pburba
Date: Fri Jul 22 14:18:57 2011
New Revision: 1149612

URL: http://svn.apache.org/viewvc?rev=1149612&view=rev
Log:
Another follow-up to the ill-advised r1149001.  The moral: Don't commit
partial patches at the end of a long day.  Just don't do it!

* subversion/libsvn_client/merge.c
  (remove_noop_subtree_ranges): Do away with a couple needless local
   variables and simply use the struct members.  Avoids a serious bug where
   merged revisions were not removed from a subtree's remaining ranges,
   resulting in needless noop editor drives (note this bug never made it
   to the 1.7.x branch, so nothing to backport).
 

Modified:
    subversion/trunk/subversion/libsvn_client/merge.c

Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1149612&r1=1149611&r2=1149612&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Fri Jul 22 14:18:57 2011
@@ -8078,8 +8078,6 @@ remove_noop_subtree_ranges(const char *u
   apr_array_header_t *subtree_gap_ranges;
   apr_array_header_t *subtree_remaining_ranges;
   apr_array_header_t *log_targets;
-  apr_array_header_t *merged_ranges;
-  apr_array_header_t *operative_ranges;
   log_noop_baton_t log_gap_baton;
   svn_merge_range_t *oldest_gap_rev;
   svn_merge_range_t *youngest_gap_rev;
@@ -8099,8 +8097,6 @@ remove_noop_subtree_ranges(const char *u
   subtree_remaining_ranges = apr_array_make(scratch_pool, 1,
                                             sizeof(svn_merge_range_t *));
   log_targets = apr_array_make(scratch_pool, 1, sizeof(const char *));
-  merged_ranges = apr_array_make(scratch_pool, 0, sizeof(svn_revnum_t *));
-  operative_ranges = apr_array_make(scratch_pool, 0, sizeof(svn_revnum_t *));
 
   /* Given the requested merge of REVISION1:REVISION2 might there be any
      part of this range required for subtrees but not for the target? */
@@ -8170,8 +8166,10 @@ remove_noop_subtree_ranges(const char *u
                     &(log_gap_baton.source_repos_abs), merge_b->ctx->wc_ctx,
                     url2, repos_root_url, TRUE, NULL,
                     result_pool, scratch_pool));
-  log_gap_baton.merged_ranges = merged_ranges;
-  log_gap_baton.operative_ranges = operative_ranges;
+  log_gap_baton.merged_ranges = apr_array_make(scratch_pool, 0,
+                                               sizeof(svn_revnum_t *));
+  log_gap_baton.operative_ranges = apr_array_make(scratch_pool, 0,
+                                                  sizeof(svn_revnum_t *));
   log_gap_baton.pool = svn_pool_create(scratch_pool);
 
   APR_ARRAY_PUSH(log_targets, const char *) = "";
@@ -8186,7 +8184,7 @@ remove_noop_subtree_ranges(const char *u
                                                  youngest_gap_rev->end,
                                                  TRUE, scratch_pool);
   SVN_ERR(svn_rangelist_remove(&(inoperative_ranges),
-                               operative_ranges,
+                               log_gap_baton.operative_ranges,
                                inoperative_ranges, FALSE, scratch_pool));
 
   SVN_ERR(svn_rangelist_merge2(log_gap_baton.merged_ranges, inoperative_ranges,
@@ -8204,7 +8202,7 @@ remove_noop_subtree_ranges(const char *u
           /* Remove inoperative ranges from all children so we don't perform
              inoperative editor drives. */
           SVN_ERR(svn_rangelist_remove(&(child->remaining_ranges),
-                                       merged_ranges,
+                                       log_gap_baton.merged_ranges,
                                        child->remaining_ranges,
                                        FALSE, result_pool));
         }