Rollup merge of #58536 - xfix:remove-ub-in-pointer-tests, r=RalfJung

Remove UB in pointer tests

UB found by Miri.
This commit is contained in:
kennytm 2019-02-20 01:13:28 +08:00
commit 943fe1ee2c
No known key found for this signature in database
GPG Key ID: FEF6C8051D0E013C

View File

@ -40,18 +40,17 @@ fn test() {
}
#[test]
#[cfg(not(miri))] // This test performs invalid OOB pointer arithmetic
fn test_is_null() {
let p: *const isize = null();
assert!(p.is_null());
let q = unsafe { p.offset(1) };
let q = p.wrapping_offset(1);
assert!(!q.is_null());
let mp: *mut isize = null_mut();
assert!(mp.is_null());
let mq = unsafe { mp.offset(1) };
let mq = mp.wrapping_offset(1);
assert!(!mq.is_null());
// Pointers to unsized types -- slices
@ -208,7 +207,6 @@ fn test_ptr_addition() {
}
#[test]
#[cfg(not(miri))] // This test performs invalid OOB pointer arithmetic
fn test_ptr_subtraction() {
unsafe {
let xs = vec![0,1,2,3,4,5,6,7,8,9];
@ -224,8 +222,11 @@ fn test_ptr_subtraction() {
let m_start = xs_mut.as_mut_ptr();
let mut m_ptr = m_start.offset(9);
while m_ptr >= m_start {
loop {
*m_ptr += *m_ptr;
if m_ptr == m_start {
break;
}
m_ptr = m_ptr.offset(-1);
}