about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2020-02-27 09:45:32 +0100
committerRalf Jung <post@ralfj.de>2020-02-27 09:45:32 +0100
commit8d3b3063f6a91eb4d421998aea3c7dbcefa34f11 (patch)
tree458fa364fe885abca2eda677f855015dc4d925ec
parentd1d0de94db77b2165a716030adf56862a7b7617a (diff)
downloadrust-8d3b3063f6a91eb4d421998aea3c7dbcefa34f11.tar.gz
rust-8d3b3063f6a91eb4d421998aea3c7dbcefa34f11.zip
avoid a negation in is_nonoverlapping
-rw-r--r--src/libcore/intrinsics.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libcore/intrinsics.rs b/src/libcore/intrinsics.rs
index 9a23b54dfa0..ecee33c2e6f 100644
--- a/src/libcore/intrinsics.rs
+++ b/src/libcore/intrinsics.rs
@@ -1429,8 +1429,9 @@ pub(crate) fn is_nonoverlapping<T>(src: *const T, dst: *const T, count: usize) -
     let dst_usize = dst as usize;
     let size = mem::size_of::<T>().checked_mul(count).unwrap();
     let diff = if src_usize > dst_usize { src_usize - dst_usize } else { dst_usize - src_usize };
-    let overlaps = size > diff;
-    !overlaps
+    // If the absolute distance between the ptrs is at least as big as the size of the buffer,
+    // they do not overlap.
+    diff >= size
 }
 
 /// Copies `count * size_of::<T>()` bytes from `src` to `dst`. The source