diff options
| author | Ralf Jung <post@ralfj.de> | 2020-02-27 09:45:32 +0100 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2020-02-27 09:45:32 +0100 |
| commit | 8d3b3063f6a91eb4d421998aea3c7dbcefa34f11 (patch) | |
| tree | 458fa364fe885abca2eda677f855015dc4d925ec | |
| parent | d1d0de94db77b2165a716030adf56862a7b7617a (diff) | |
| download | rust-8d3b3063f6a91eb4d421998aea3c7dbcefa34f11.tar.gz rust-8d3b3063f6a91eb4d421998aea3c7dbcefa34f11.zip | |
avoid a negation in is_nonoverlapping
| -rw-r--r-- | src/libcore/intrinsics.rs | 5 |
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 |
