rust/tests/fail/validity/cast_fn_ptr2.rs
2022-07-11 11:48:56 +00:00

16 lines
497 B
Rust

//@compile-flags: -Zmiri-permissive-provenance
fn main() {
// Cast a function pointer such that when returning, the return value gets transmuted
// from raw ptr to reference. This is ABI-compatible, so it's not the call that
// should fail, but validation should.
fn f() -> *const i32 {
0usize as *const i32
}
let g: fn() -> &'static i32 = unsafe { std::mem::transmute(f as fn() -> *const i32) };
let _x = g();
//~^ ERROR: encountered a null reference
}