rust/tests/run-pass/ptr_arith_offset_overflow.rs
2019-05-28 22:46:56 +02:00

13 lines
443 B
Rust

use std::ptr;
fn main() {
let v = [1i16, 2];
let x = &mut ptr::null(); // going through memory as there are more sanity checks along that path
*x = v.as_ptr().wrapping_offset(1); // ptr to the 2nd element
// Adding 2*isize::max and then 1 is like substracting 1
*x = x.wrapping_offset(isize::max_value());
*x = x.wrapping_offset(isize::max_value());
*x = x.wrapping_offset(1);
assert_eq!(unsafe { **x }, 1);
}