Skip to content

Commit cc6a6ba

Browse files
authored
Merge pull request #418 from guilliamxavier/patch-1
Fix `Vec::push_all` ptr code in exception-safety
2 parents 69c1421 + 9dfff98 commit cc6a6ba

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

src/exception-safety.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,13 @@ impl<T: Clone> Vec<T> {
4141
fn push_all(&mut self, to_push: &[T]) {
4242
self.reserve(to_push.len());
4343
unsafe {
44+
let end_ptr = self.as_mut_ptr().add(self.len());
45+
4446
// can't overflow because we just reserved this
4547
self.set_len(self.len() + to_push.len());
4648
4749
for (i, x) in to_push.iter().enumerate() {
48-
self.ptr().add(i).write(x.clone());
50+
end_ptr.add(i).write(x.clone());
4951
}
5052
}
5153
}

0 commit comments

Comments
 (0)