|
9 | 9 | use crate::cmp::Ordering::{self, Equal, Greater, Less};
|
10 | 10 | use crate::fmt;
|
11 | 11 | use crate::hint;
|
12 |
| -use crate::intrinsics::exact_div; |
| 12 | +use crate::intrinsics::{exact_div, unchecked_sub}; |
13 | 13 | use crate::mem::{self, SizedTypeProperties};
|
14 | 14 | use crate::num::NonZero;
|
15 | 15 | use crate::ops::{Bound, OneSidedRange, Range, RangeBounds};
|
@@ -1983,7 +1983,7 @@ impl<T> [T] {
|
1983 | 1983 | );
|
1984 | 1984 |
|
1985 | 1985 | // SAFETY: Caller has to check that `0 <= mid <= self.len()`
|
1986 |
| - unsafe { (from_raw_parts(ptr, mid), from_raw_parts(ptr.add(mid), len - mid)) } |
| 1986 | + unsafe { (from_raw_parts(ptr, mid), from_raw_parts(ptr.add(mid), unchecked_sub(len, mid))) } |
1987 | 1987 | }
|
1988 | 1988 |
|
1989 | 1989 | /// Divides one mutable slice into two at an index, without doing bounds checking.
|
@@ -2035,7 +2035,12 @@ impl<T> [T] {
|
2035 | 2035 | //
|
2036 | 2036 | // `[ptr; mid]` and `[mid; len]` are not overlapping, so returning a mutable reference
|
2037 | 2037 | // is fine.
|
2038 |
| - unsafe { (from_raw_parts_mut(ptr, mid), from_raw_parts_mut(ptr.add(mid), len - mid)) } |
| 2038 | + unsafe { |
| 2039 | + ( |
| 2040 | + from_raw_parts_mut(ptr, mid), |
| 2041 | + from_raw_parts_mut(ptr.add(mid), unchecked_sub(len, mid)), |
| 2042 | + ) |
| 2043 | + } |
2039 | 2044 | }
|
2040 | 2045 |
|
2041 | 2046 | /// Divides one slice into two at an index, returning `None` if the slice is
|
|
0 commit comments