]> git.lizzy.rs Git - rust.git/blob - src/tools/miri/tests/fail/stacked_borrows/buggy_split_at_mut.rs
Auto merge of #105175 - michaelwoerister:add-stable-ord-trait, r=nagisa
[rust.git] / src / tools / miri / tests / fail / stacked_borrows / buggy_split_at_mut.rs
1 mod safe {
2     use std::slice::from_raw_parts_mut;
3
4     pub fn split_at_mut<T>(self_: &mut [T], mid: usize) -> (&mut [T], &mut [T]) {
5         let len = self_.len();
6         let ptr = self_.as_mut_ptr();
7
8         unsafe {
9             assert!(mid <= len);
10
11             (
12                 from_raw_parts_mut(ptr, len - mid), // BUG: should be "mid" instead of "len - mid"
13                 from_raw_parts_mut(ptr.offset(mid as isize), len - mid),
14             )
15         }
16     }
17 }
18
19 fn main() {
20     let mut array = [1, 2, 3, 4];
21     let (a, b) = safe::split_at_mut(&mut array, 0);
22     //~^ ERROR: /retag .* tag does not exist in the borrow stack/
23     a[1] = 5;
24     b[1] = 6;
25 }