Skip to content

Commit 7d96cd2

Browse files
committed
Fix miri errors.
1 parent 7650144 commit 7d96cd2

File tree

2 files changed

+4
-3
lines changed

2 files changed

+4
-3
lines changed

src/vec/drain.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ impl<T, const N: usize> Drop for Drain<'_, T, N> {
104104
let start = source_vec.len();
105105
let tail = self.0.tail_start;
106106
if tail != start {
107-
let src = source_vec.as_ptr().add(tail);
108107
let dst = source_vec.as_mut_ptr().add(start);
108+
let src = source_vec.as_ptr().add(tail);
109109
ptr::copy(src, dst, self.0.tail_len);
110110
}
111111
source_vec.set_len(start + self.0.tail_len);

src/vec/mod.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -345,12 +345,13 @@ impl<T, const N: usize> Vec<T, N> {
345345
unsafe {
346346
// Set `self.vec` length's to `start`, to be safe in case `Drain` is leaked.
347347
self.set_len(start);
348-
let range_slice = slice::from_raw_parts(self.as_ptr().add(start), end - start);
348+
let vec = NonNull::from(self);
349+
let range_slice = slice::from_raw_parts(vec.as_ref().as_ptr().add(start), end - start);
349350
Drain {
350351
tail_start: end,
351352
tail_len: len - end,
352353
iter: range_slice.iter(),
353-
vec: NonNull::from(self),
354+
vec,
354355
}
355356
}
356357
}

0 commit comments

Comments
 (0)