Skip to content

Commit

Permalink
make another test more robust against random alignment
Browse files Browse the repository at this point in the history
  • Loading branch information
RalfJung committed Aug 17, 2020
1 parent db159b8 commit 9b6e432
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions tests/compile-fail/unaligned_pointers/unaligned_ptr_addr_of.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@
use std::ptr;

fn main() {
let x = [2u16, 3, 4]; // Make it big enough so we don't get an out-of-bounds error.
let x = &x[0] as *const _ as *const u32;
// This must fail because alignment is violated: the allocation's base is not sufficiently aligned.
// The deref is UB even if we just put the result into a raw pointer.
let _x = unsafe { ptr::raw_const!(*x) }; //~ ERROR memory with alignment 2, but alignment 4 is required
for _ in 0..10 { // Try many times as this might work by chance.
let x = [2u16, 3, 4]; // Make it big enough so we don't get an out-of-bounds error.
let x = &x[0] as *const _ as *const u32;
// This must fail because alignment is violated: the allocation's base is not sufficiently aligned.
// The deref is UB even if we just put the result into a raw pointer.
let _x = unsafe { ptr::raw_const!(*x) }; //~ ERROR memory with alignment 2, but alignment 4 is required
}
}

0 comments on commit 9b6e432

Please sign in to comment.