Fix a move-update SEGV in property handling.
* subversion/libsvn_wc/wc_db_update_move.c
(tc_editor_alter_file): Remove a workqueue item merge.
* subversion/tests/cmdline/move_tests.py
(prop_test1): Start testing status after resolve, mark XFAIL rather
than WIMP since it is now a status mismatch rather than a SEGV.
git-svn-id: https://svn.apache.org/repos/asf/subversion/trunk@1451690 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/subversion/libsvn_wc/wc_db_update_move.c b/subversion/libsvn_wc/wc_db_update_move.c
index 99da8d3..5a113b0 100644
--- a/subversion/libsvn_wc/wc_db_update_move.c
+++ b/subversion/libsvn_wc/wc_db_update_move.c
@@ -1021,13 +1021,11 @@
{
svn_skel_t *work_items;
- SVN_ERR(update_working_file(&work_items, dst_relpath,
+ SVN_ERR(update_working_file(b->work_items, dst_relpath,
move_dst_repos_relpath,
b->operation, &old_version, &new_version,
b->wcroot, b->db,
b->result_pool, scratch_pool));
- *b->work_items = svn_wc__wq_merge(*b->work_items, work_items,
- b->result_pool);
}
return SVN_NO_ERROR;
diff --git a/subversion/tests/cmdline/move_tests.py b/subversion/tests/cmdline/move_tests.py
index 83a211b..203164d 100755
--- a/subversion/tests/cmdline/move_tests.py
+++ b/subversion/tests/cmdline/move_tests.py
@@ -1027,7 +1027,7 @@
move_file_tests(sbox, source, dest, move_func, tests)
-@Wimp("SEGV in add_single_work_item")
+@XFail()
def prop_test1(sbox):
"test property merging on move-update"
@@ -1074,27 +1074,27 @@
expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
expected_status.tweak('A/C', status='D ', moved_to='A/C2')
expected_status.add({
- 'A/C/D1' : Item(status='D ', wc_rev =2),
- 'A/C/D2' : Item(status='D ', wc_rev =2),
- 'A/C/D3' : Item(status='D ', wc_rev =2),
- 'A/C/D4' : Item(status='D ', wc_rev =2),
- 'A/C/D5' : Item(status='D ', wc_rev =2),
- 'A/C/f1' : Item(status='D ', wc_rev =2),
- 'A/C/f2' : Item(status='D ', wc_rev =2),
- 'A/C/f3' : Item(status='D ', wc_rev =2),
- 'A/C/f4' : Item(status='D ', wc_rev =2),
- 'A/C/f5' : Item(status='D ', wc_rev =2),
- 'A/C2' : Item(status='A ', copied='+', wc_rev ='-', moved_from='A/C'),
- 'A/C2/D1' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/D2' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/D3' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/D4' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/D5' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/f1' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/f2' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/f3' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/f4' : Item(status=' M', copied='+', wc_rev ='-'),
- 'A/C2/f5' : Item(status=' M', copied='+', wc_rev ='-'),
+ 'A/C/D1' : Item(status='D ', wc_rev=2),
+ 'A/C/D2' : Item(status='D ', wc_rev=2),
+ 'A/C/D3' : Item(status='D ', wc_rev=2),
+ 'A/C/D4' : Item(status='D ', wc_rev=2),
+ 'A/C/D5' : Item(status='D ', wc_rev=2),
+ 'A/C/f1' : Item(status='D ', wc_rev=2),
+ 'A/C/f2' : Item(status='D ', wc_rev=2),
+ 'A/C/f3' : Item(status='D ', wc_rev=2),
+ 'A/C/f4' : Item(status='D ', wc_rev=2),
+ 'A/C/f5' : Item(status='D ', wc_rev=2),
+ 'A/C2' : Item(status='A ', copied='+', wc_rev='-', moved_from='A/C'),
+ 'A/C2/D1' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/D2' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/D3' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/D4' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/D5' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/f1' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/f2' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/f3' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/f4' : Item(status=' M', copied='+', wc_rev='-'),
+ 'A/C2/f5' : Item(status=' M', copied='+', wc_rev='-'),
})
svntest.actions.run_and_verify_status(wc_dir, expected_status)
@@ -1104,6 +1104,19 @@
'--accept=mine-conflict',
sbox.ospath('A/C'))
+ expected_status.tweak(wc_rev=3)
+ expected_status.tweak('A/C2',
+ 'A/C2/D1', 'A/C2/D2', 'A/C2/D3', 'A/C2/D4', 'A/C2/D5',
+ 'A/C2/f1', 'A/C2/f2', 'A/C2/f3', 'A/C2/f4', 'A/C2/f5',
+ wc_rev='-')
+ expected_status.tweak('A/C2/D3', 'A/C2/D3',
+ status=' ')
+ expected_status.tweak('A/C2/D4', 'A/C2/D5',
+ 'A/C2/f4', 'A/C2/f5',
+ status=' C')
+
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
#######################################################################
# Run the tests