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));
}