diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-04-01 12:07:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-01 12:07:02 +0200 |
| commit | 3245e6129819f892fd793d42051f6f7bbd2d91bd (patch) | |
| tree | 7a5fd3ed4ba5231b8c6a9bd9b753eefdb8c1d504 | |
| parent | e21b27ff7a7ca155daaa2fac580b12dd2644da57 (diff) | |
| parent | 907ba11490e95e2bb649329456eb5ab9a6976f99 (diff) | |
| download | rust-3245e6129819f892fd793d42051f6f7bbd2d91bd.tar.gz rust-3245e6129819f892fd793d42051f6f7bbd2d91bd.zip | |
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. :)
| -rw-r--r-- | library/core/tests/ptr.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/library/core/tests/ptr.rs b/library/core/tests/ptr.rs index 750e7295fb5..6a39ab79f49 100644 --- a/library/core/tests/ptr.rs +++ b/library/core/tests/ptr.rs @@ -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 |
