// Issue #5041 - avoid overlapping memcpy when src and dest of a swap are the same
+use std::ptr;
+
pub fn main() {
let mut test = TestDescAndFn {
desc: TestDesc {
- name: DynTestName(~"test"),
+ name: DynTestName("test".to_owned()),
should_fail: false
},
- testfn: DynTestFn(|| ()),
+ testfn: DynTestFn(proc() ()),
};
do_swap(&mut test);
}
fn do_swap(test: &mut TestDescAndFn) {
- *test <-> *test;
+ unsafe {
+ ptr::swap(test, test);
+ }
}
pub enum TestName {
}
pub enum TestFn {
- DynTestFn(~fn()),
- DynBenchFn(~fn(&mut int))
+ DynTestFn(proc()),
+ DynBenchFn(proc(&mut int))
}
pub struct TestDesc {