Closed
Description
The following passes Miri, but is it sound? In particular, I'm worried about the SharedReadWrite permission being "erased" at some point in the series of pointer casts.
fn main() {
let x = UnsafeCell::new(0);
let x = &x;
let x_ptr: *const UnsafeCell<usize> = x;
let x_ptr = x_ptr.cast::<usize>();
let x_ptr = x_ptr.cast_mut();
let x_ptr = NonNull::new(x_ptr).unwrap();
let x_ptr = x_ptr.as_ptr();
let x_ptr = x_ptr.cast_const();
let x_ptr = x_ptr.cast::<UnsafeCell<usize>>();
let _x = unsafe { &*x_ptr };
}
Metadata
Metadata
Assignees
Labels
No labels