Rollup merge of #95516 - RalfJung:ptrs-not-ints, r=dtolnay
ptr_metadata test: avoid ptr-to-int transmutes Pointers can have provenance, integers don't, so transmuting pointers to integers creates "non-standard" values and it is unclear how well those can be supported (https://github.com/rust-lang/unsafe-code-guidelines/issues/286). So for this test let's take the safer option and use a pointer type instead. That also makes Miri happy. :)
This commit is contained in:
commit
3245e61298
1 changed files with 5 additions and 5 deletions
|
|
@ -490,11 +490,11 @@ fn ptr_metadata() {
|
|||
let vtable_5: DynMetadata<dyn Display> =
|
||||
metadata(&Pair(true, 7_u32) as &Pair<bool, dyn Display>);
|
||||
unsafe {
|
||||
let address_1: usize = std::mem::transmute(vtable_1);
|
||||
let address_2: usize = std::mem::transmute(vtable_2);
|
||||
let address_3: usize = std::mem::transmute(vtable_3);
|
||||
let address_4: usize = std::mem::transmute(vtable_4);
|
||||
let address_5: usize = std::mem::transmute(vtable_5);
|
||||
let address_1: *const () = std::mem::transmute(vtable_1);
|
||||
let address_2: *const () = std::mem::transmute(vtable_2);
|
||||
let address_3: *const () = std::mem::transmute(vtable_3);
|
||||
let address_4: *const () = std::mem::transmute(vtable_4);
|
||||
let address_5: *const () = std::mem::transmute(vtable_5);
|
||||
// Different trait => different vtable pointer
|
||||
assert_ne!(address_1, address_2);
|
||||
// Different erased type => different vtable pointer
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue