From 89061c323861c4e9555881fef940836f1cd132cc Mon Sep 17 00:00:00 2001 From: Alice Ryhl Date: Fri, 29 Apr 2022 19:47:34 +0200 Subject: [PATCH] Only avoid pointer casts when using miri --- src/bytes.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/bytes.rs b/src/bytes.rs index 0f2ee3a..4e7a3e5 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -1104,14 +1104,25 @@ unsafe fn release_shared(ptr: *mut Shared) { Box::from_raw(ptr); } +#[cfg(miri)] fn ptr_map(ptr: *mut u8, f: F) -> *mut u8 where F: FnOnce(usize) -> usize, { let old_addr = ptr as usize; let new_addr = f(old_addr); - // this optimizes better than `ptr.wrapping_add(new_addr.wrapping_sub(old_addr))` - ptr.wrapping_sub(old_addr).wrapping_add(new_addr) + let diff = new_addr.wrapping_sub(old_addr); + ptr.wrapping_add(diff) +} + +#[cfg(not(miri))] +fn ptr_map(ptr: *mut u8, f: F) -> *mut u8 +where + F: FnOnce(usize) -> usize, +{ + let old_addr = ptr as usize; + let new_addr = f(old_addr); + new_addr as *mut u8 } // compile-fails