Author: svn-role
Date: Sat Feb 10 04:00:06 2018
New Revision: 1823728
URL: http://svn.apache.org/viewvc?rev=1823728&view=rev
Log:
Merge the 1.10.x-issue4686 branch:
* r1823202,r1823203
Fix issue #4686 "Unable to parse reversed revision range '19634-19631'"
Justification:
Assertion failure during certain merges.
Branch: ^/subversion/branches/1.10.x-issue4686
Votes:
+1: julianfoad, rhuijben, philip
Modified:
subversion/branches/1.10.x/ (props changed)
subversion/branches/1.10.x/STATUS
subversion/branches/1.10.x/subversion/libsvn_subr/mergeinfo.c
subversion/branches/1.10.x/subversion/tests/libsvn_subr/mergeinfo-test.c
Propchange: subversion/branches/1.10.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sat Feb 10 04:00:06 2018
@@ -1,4 +1,5 @@
/subversion/branches/1.10-cache-improvements:1669168-1694487
+/subversion/branches/1.10.x-issue4686:1823212-1823727
/subversion/branches/1.5.x-r30215:870312
/subversion/branches/1.7.x-fs-verify:1146708,1161180
/subversion/branches/1.9-cache-improvements:1678948-1679863
@@ -99,4 +100,4 @@
/subversion/branches/verify-at-commit:1462039-1462408
/subversion/branches/verify-keep-going:1439280-1546110
/subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1817837,1817856,1818577-1818578,1818584,1818651,1818662,1818727,1818801,1818803,1818807,1818868,1818871,1819036-1819037,1819043,1819049,1819052,1819093,1819146,1819162,1819444,1819556-1819557,1819603,1819804,1819911,1820046-1820047,1820518,1820718,1821183,1821224,1821621,1821678,1822401
+/subversion/trunk:1817837,1817856,1818577-1818578,1818584,1818651,1818662,1818727,1818801,1818803,1818807,1818868,1818871,1819036-1819037,1819043,1819049,1819052,1819093,1819146,1819162,1819444,1819556-1819557,1819603,1819804,1819911,1820046-1820047,1820518,1820718,1821183,1821224,1821621,1821678,1822401,1823202-1823203
Modified: subversion/branches/1.10.x/STATUS
URL:
http://svn.apache.org/viewvc/subversion/branches/1.10.x/STATUS?rev=1823728&r1=1823727&r2=1823728&view=diff
==============================================================================
--- subversion/branches/1.10.x/STATUS (original)
+++ subversion/branches/1.10.x/STATUS Sat Feb 10 04:00:06 2018
@@ -57,11 +57,3 @@ Veto-blocked changes:
Approved changes:
=================
-
- * r1823202,r1823203
- Fix issue #4686 "Unable to parse reversed revision range '19634-19631'"
- Justification:
- Assertion failure during certain merges.
- Branch: ^/subversion/branches/1.10.x-issue4686
- Votes:
- +1: julianfoad, rhuijben, philip
Modified: subversion/branches/1.10.x/subversion/libsvn_subr/mergeinfo.c
URL:
http://svn.apache.org/viewvc/subversion/branches/1.10.x/subversion/libsvn_subr/mergeinfo.c?rev=1823728&r1=1823727&r2=1823728&view=diff
==============================================================================
--- subversion/branches/1.10.x/subversion/libsvn_subr/mergeinfo.c (original)
+++ subversion/branches/1.10.x/subversion/libsvn_subr/mergeinfo.c Sat Feb 10
04:00:06 2018
@@ -891,7 +891,7 @@ adjust_remaining_ranges(svn_rangelist_t
new_modified_range->end = modified_range->end;
new_modified_range->inheritable = FALSE;
modified_range->end = next_range->start;
- (*range_index)+=2;
+ (*range_index) += 2 + elements_to_delete;
svn_sort__array_insert(rangelist, &new_modified_range,
*range_index);
/* Recurse with the new range. */
Modified:
subversion/branches/1.10.x/subversion/tests/libsvn_subr/mergeinfo-test.c
URL:
http://svn.apache.org/viewvc/subversion/branches/1.10.x/subversion/tests/libsvn_subr/mergeinfo-test.c?rev=1823728&r1=1823727&r2=1823728&view=diff
==============================================================================
--- subversion/branches/1.10.x/subversion/tests/libsvn_subr/mergeinfo-test.c
(original)
+++ subversion/branches/1.10.x/subversion/tests/libsvn_subr/mergeinfo-test.c
Sat Feb 10 04:00:06 2018
@@ -1673,100 +1673,27 @@ test_remove_prefix_from_catalog(apr_pool
static svn_error_t *
test_rangelist_merge_overlap(apr_pool_t *pool)
{
- svn_rangelist_t * changes;
- /*
15014-19472,19473-19612*,19613-19614,19615-19630*,19631-19634,19635-20055* */
- svn_rangelist_t * rangelist = apr_array_make(pool, 1,
sizeof(svn_merge_range_t *));
- svn_merge_range_t *mrange = apr_pcalloc(pool, sizeof(*mrange));
-
- /* This range is optional for reproducing issue #4686 */
- mrange->start = 15013;
- mrange->end = 19472;
- mrange->inheritable = TRUE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19472;
- mrange->end = 19612;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- /* This range is optional for reproducing issue #4686 */
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19612;
- mrange->end = 19614;
- mrange->inheritable = TRUE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19614;
- mrange->end = 19630;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19630;
- mrange->end = 19634;
- mrange->inheritable = TRUE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- /* This range is optional for reproducing issue #4686 */
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 19634;
- mrange->end = 20055;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(rangelist, svn_merge_range_t *) = mrange;
-
- /* 15014-20515* */
- changes = apr_array_make(pool, 1, sizeof(svn_merge_range_t *));
- mrange = apr_pcalloc(pool, sizeof(*mrange));
- mrange->start = 15013;
- mrange->end = 20515;
- mrange->inheritable = FALSE;
- APR_ARRAY_PUSH(changes, svn_merge_range_t *) = mrange;
-#if 0
- {
- svn_string_t * tmpString;
-
- svn_rangelist_to_string(&tmpString, rangelist, pool);
- printf("rangelist %s\n", tmpString->data);
- }
- {
- svn_string_t * tmpString;
-
- svn_rangelist_to_string(&tmpString, changes, pool);
- printf("changes %s\n", tmpString->data);
- }
-#endif
-
+ const char *rangelist_str = "19473-19612*,19615-19630*,19631-19634";
+ const char *changes_str = "15014-20515*";
+ const char *expected_str = "15014-19630*,19631-19634,19635-20515*";
+ /* wrong result: "15014-19630*,19634-19631*,19631-19634,19635-20515*" */
+ svn_rangelist_t *rangelist, *changes;
+ svn_string_t *result_string;
+
+ /* prepare the inputs */
+ SVN_ERR(svn_rangelist__parse(&rangelist, rangelist_str, pool));
+ SVN_ERR(svn_rangelist__parse(&changes, changes_str, pool));
SVN_TEST_ASSERT(svn_rangelist__is_canonical(rangelist));
SVN_TEST_ASSERT(svn_rangelist__is_canonical(changes));
+ /* perform the merge */
SVN_ERR(svn_rangelist_merge2(rangelist, changes, pool, pool));
+ /* check the output */
SVN_TEST_ASSERT(svn_rangelist__is_canonical(rangelist));
+ SVN_ERR(svn_rangelist_to_string(&result_string, rangelist, pool));
+ SVN_TEST_STRING_ASSERT(result_string->data, expected_str);
-#if 0
- {
- svn_string_t * tmpString;
-
- svn_rangelist_to_string(&tmpString, rangelist, pool);
- printf("result %s\n", tmpString->data);
- }
-#endif
-
- /* wrong result
- result
15014-19472,19473-19612*,19613-19614,19615-19630*,19634-19631*,19631-19634,19635-20515*
- */
-
- {
- svn_string_t * tmp_string;
- svn_rangelist_t *range_list;
-
- svn_rangelist_to_string(&tmp_string, rangelist, pool);
-
- SVN_ERR(svn_rangelist__parse(&range_list, tmp_string->data, pool));
- }
-
return SVN_NO_ERROR;
}
@@ -1900,9 +1827,9 @@ static struct svn_test_descriptor_t test
"diff of rangelists"),
SVN_TEST_PASS2(test_remove_prefix_from_catalog,
"removal of prefix paths from catalog keys"),
- SVN_TEST_XFAIL2(test_rangelist_merge_overlap,
+ SVN_TEST_PASS2(test_rangelist_merge_overlap,
"merge of rangelists with overlaps (issue 4686)"),
- SVN_TEST_XFAIL2(test_rangelist_loop,
+ SVN_TEST_PASS2(test_rangelist_loop,
"test rangelist edgecases via loop"),
SVN_TEST_NULL
};