Author: philip
Date: Fri Mar 1 19:09:16 2013
New Revision: 1451690
URL: http://svn.apache.org/r1451690
Log:
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.
Modified:
subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c
subversion/trunk/subversion/tests/cmdline/move_tests.py
Modified: subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c?rev=1451690&r1=1451689&r2=1451690&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c (original)
+++ subversion/trunk/subversion/libsvn_wc/wc_db_update_move.c Fri Mar 1
19:09:16 2013
@@ -1021,13 +1021,11 @@ tc_editor_alter_file(void *baton,
{
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;
Modified: subversion/trunk/subversion/tests/cmdline/move_tests.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/move_tests.py?rev=1451690&r1=1451689&r2=1451690&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/move_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/move_tests.py Fri Mar 1 19:09:16
2013
@@ -1027,7 +1027,7 @@ def deeper_move_file_test(sbox):
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 @@ def prop_test1(sbox):
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 @@ def prop_test1(sbox):
'--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