diff options
| author | Mara Bos <m-ou.se@m-ou.se> | 2020-11-01 11:53:36 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-01 11:53:36 +0100 |
| commit | 8ed31d278244d3db9d326b7480f53eaa02429e60 (patch) | |
| tree | aaa78631fa13e3c90ac809595eeec843b21b23af /library/alloc/src | |
| parent | f281a76f838161a5e95fd0bba82847feb0a29435 (diff) | |
| parent | 9749eb72af8f817fd72c0a7cdad324a9baa8b635 (diff) | |
| download | rust-8ed31d278244d3db9d326b7480f53eaa02429e60.tar.gz rust-8ed31d278244d3db9d326b7480f53eaa02429e60.zip | |
Rollup merge of #78602 - RalfJung:raw-ptr-aliasing-issues, r=m-ou-se
fix various aliasing issues in the standard library This fixes various cases where the standard library either used raw pointers after they were already invalidated by using the original reference again, or created raw pointers for one element of a slice and used it to access neighboring elements.
Diffstat (limited to 'library/alloc/src')
| -rw-r--r-- | library/alloc/src/collections/binary_heap.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/library/alloc/src/collections/binary_heap.rs b/library/alloc/src/collections/binary_heap.rs index f2852b1cc2b..b67c72d7136 100644 --- a/library/alloc/src/collections/binary_heap.rs +++ b/library/alloc/src/collections/binary_heap.rs @@ -1036,8 +1036,9 @@ impl<'a, T> Hole<'a, T> { debug_assert!(index != self.pos); debug_assert!(index < self.data.len()); unsafe { - let index_ptr: *const _ = self.data.get_unchecked(index); - let hole_ptr = self.data.get_unchecked_mut(self.pos); + let ptr = self.data.as_mut_ptr(); + let index_ptr: *const _ = ptr.add(index); + let hole_ptr = ptr.add(self.pos); ptr::copy_nonoverlapping(index_ptr, hole_ptr, 1); } self.pos = index; |
