| //@compile-flags: -Zmiri-tree-borrows | |
| //@error-in-other-file: /deallocation through .* is forbidden/ | |
| fn inner(x: &mut i32, f: fn(*mut i32)) { | |
| // `f` may mutate, but it may not deallocate! | |
| // `f` takes a raw pointer so that the only protector | |
| // is that on `x` | |
| f(x) | |
| } | |
| fn main() { | |
| inner(Box::leak(Box::new(0)), |raw| { | |
| drop(unsafe { Box::from_raw(raw) }); | |
| }); | |
| } |