about summary refs log tree commit diff
path: root/src/liballoc/vec.rs
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2020-03-23 13:40:40 +0100
committerRalf Jung <post@ralfj.de>2020-03-30 11:58:16 +0200
commit6556549fa6d74791d1e3e155ae8a4d1480ea4481 (patch)
tree8a62699bb02c156cfaf8ecc32042140a783fd956 /src/liballoc/vec.rs
parent8926bb497d9b127eb318aea5aed0e745d8381591 (diff)
downloadrust-6556549fa6d74791d1e3e155ae8a4d1480ea4481.tar.gz
rust-6556549fa6d74791d1e3e155ae8a4d1480ea4481.zip
fix Vec::extend invalidating unrelated pointers
Diffstat (limited to 'src/liballoc/vec.rs')
-rw-r--r--src/liballoc/vec.rs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/liballoc/vec.rs b/src/liballoc/vec.rs
index e171edef736..361ce20376d 100644
--- a/src/liballoc/vec.rs
+++ b/src/liballoc/vec.rs
@@ -2122,8 +2122,9 @@ where
         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);
         }
     }
 }