mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-07 01:05:39 +03:00
fix Vec::extend invalidating unrelated pointers
This commit is contained in:
+2
-1
@@ -2122,8 +2122,9 @@ fn spec_extend(&mut self, iterator: slice::Iter<'a, T>) {
|
||||
self.reserve(slice.len());
|
||||
unsafe {
|
||||
let len = self.len();
|
||||
let dst_slice = slice::from_raw_parts_mut(self.as_mut_ptr().add(len), slice.len());
|
||||
dst_slice.copy_from_slice(slice);
|
||||
self.set_len(len + slice.len());
|
||||
self.get_unchecked_mut(len..).copy_from_slice(slice);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user