diff --git a/tests/compile-fail/storage_dead_dangling.rs b/tests/compile-fail/storage_dead_dangling.rs new file mode 100644 index 00000000000..6abae2069fc --- /dev/null +++ b/tests/compile-fail/storage_dead_dangling.rs @@ -0,0 +1,20 @@ +static mut LEAK: usize = 0; + +fn fill(v: &mut i32) { + unsafe { LEAK = v as *mut _ as usize; } +} + +fn evil() { + let v = unsafe { &mut *(LEAK as *mut i32) }; + let _x = *v; //~ ERROR dangling pointer was dereferenced +} + +fn main() { + let _y; + { + let mut x = 0i32; + fill(&mut x); + _y = x; + } + evil(); +}