addr no longer exposes :)
This commit is contained in:
parent
63625b0397
commit
34d4928dce
@ -1,12 +1,12 @@
|
||||
// compile-flags: -Zmiri-permissive-provenance -Zmiri-disable-stacked-borrows -Zmiri-allow-ptr-int-transmute
|
||||
// compile-flags: -Zmiri-permissive-provenance -Zmiri-disable-stacked-borrows
|
||||
#![feature(strict_provenance)]
|
||||
|
||||
fn main() {
|
||||
let x: i32 = 3;
|
||||
let x_ptr = &x as *const i32;
|
||||
|
||||
// TODO: switch this to addr() once we intrinsify it
|
||||
let x_usize: usize = unsafe { std::mem::transmute(x_ptr) };
|
||||
// Cast back a pointer that did *not* get exposed.
|
||||
let ptr = x_usize as *const i32;
|
||||
let x_usize: usize = x_ptr.addr();
|
||||
// Cast back an address that did *not* get exposed.
|
||||
let ptr = std::ptr::from_exposed_addr::<i32>(x_usize);
|
||||
assert_eq!(unsafe { *ptr }, 3); //~ ERROR Undefined Behavior: dereferencing pointer failed
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user