Skip to content

Commit 89061c3

Browse files
committed
Only avoid pointer casts when using miri
1 parent 0a2c43a commit 89061c3

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/bytes.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1104,14 +1104,25 @@ unsafe fn release_shared(ptr: *mut Shared) {
11041104
Box::from_raw(ptr);
11051105
}
11061106

1107+
#[cfg(miri)]
11071108
fn ptr_map<F>(ptr: *mut u8, f: F) -> *mut u8
11081109
where
11091110
F: FnOnce(usize) -> usize,
11101111
{
11111112
let old_addr = ptr as usize;
11121113
let new_addr = f(old_addr);
1113-
// this optimizes better than `ptr.wrapping_add(new_addr.wrapping_sub(old_addr))`
1114-
ptr.wrapping_sub(old_addr).wrapping_add(new_addr)
1114+
let diff = new_addr.wrapping_sub(old_addr);
1115+
ptr.wrapping_add(diff)
1116+
}
1117+
1118+
#[cfg(not(miri))]
1119+
fn ptr_map<F>(ptr: *mut u8, f: F) -> *mut u8
1120+
where
1121+
F: FnOnce(usize) -> usize,
1122+
{
1123+
let old_addr = ptr as usize;
1124+
let new_addr = f(old_addr);
1125+
new_addr as *mut u8
11151126
}
11161127

11171128
// compile-fails

0 commit comments

Comments
 (0)