Rollup merge of #98233 - RalfJung:ref-alloc, r=thomcc
Remove accidental uses of `&A: Allocator` Cc https://github.com/rust-lang/rust/issues/98232 Fixes https://github.com/rust-lang/rust/issues/98176 (for real this time)
This commit is contained in:
commit
6a2a56da45
3 changed files with 10 additions and 10 deletions
|
@ -1644,11 +1644,11 @@ impl<K, V, A: Allocator + Clone> IntoIter<K, V, A> {
|
||||||
&mut self,
|
&mut self,
|
||||||
) -> Option<Handle<NodeRef<marker::Dying, K, V, marker::LeafOrInternal>, marker::KV>> {
|
) -> Option<Handle<NodeRef<marker::Dying, K, V, marker::LeafOrInternal>, marker::KV>> {
|
||||||
if self.length == 0 {
|
if self.length == 0 {
|
||||||
self.range.deallocating_end(&self.alloc);
|
self.range.deallocating_end(self.alloc.clone());
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
self.length -= 1;
|
self.length -= 1;
|
||||||
Some(unsafe { self.range.deallocating_next_unchecked(&self.alloc) })
|
Some(unsafe { self.range.deallocating_next_unchecked(self.alloc.clone()) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1658,11 +1658,11 @@ impl<K, V, A: Allocator + Clone> IntoIter<K, V, A> {
|
||||||
&mut self,
|
&mut self,
|
||||||
) -> Option<Handle<NodeRef<marker::Dying, K, V, marker::LeafOrInternal>, marker::KV>> {
|
) -> Option<Handle<NodeRef<marker::Dying, K, V, marker::LeafOrInternal>, marker::KV>> {
|
||||||
if self.length == 0 {
|
if self.length == 0 {
|
||||||
self.range.deallocating_end(&self.alloc);
|
self.range.deallocating_end(self.alloc.clone());
|
||||||
None
|
None
|
||||||
} else {
|
} else {
|
||||||
self.length -= 1;
|
self.length -= 1;
|
||||||
Some(unsafe { self.range.deallocating_next_back_unchecked(&self.alloc) })
|
Some(unsafe { self.range.deallocating_next_back_unchecked(self.alloc.clone()) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1849,7 +1849,7 @@ where
|
||||||
type Item = (K, V);
|
type Item = (K, V);
|
||||||
|
|
||||||
fn next(&mut self) -> Option<(K, V)> {
|
fn next(&mut self) -> Option<(K, V)> {
|
||||||
self.inner.next(&mut self.pred, &self.alloc)
|
self.inner.next(&mut self.pred, self.alloc.clone())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||||
|
|
|
@ -1320,7 +1320,7 @@ where
|
||||||
fn next(&mut self) -> Option<T> {
|
fn next(&mut self) -> Option<T> {
|
||||||
let pred = &mut self.pred;
|
let pred = &mut self.pred;
|
||||||
let mut mapped_pred = |k: &T, _v: &mut ()| pred(k);
|
let mut mapped_pred = |k: &T, _v: &mut ()| pred(k);
|
||||||
self.inner.next(&mut mapped_pred, &self.alloc).map(|(k, _)| k)
|
self.inner.next(&mut mapped_pred, self.alloc.clone()).map(|(k, _)| k)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn size_hint(&self) -> (usize, Option<usize>) {
|
fn size_hint(&self) -> (usize, Option<usize>) {
|
||||||
|
|
|
@ -187,7 +187,7 @@ impl System {
|
||||||
old_size => unsafe {
|
old_size => unsafe {
|
||||||
let new_ptr = self.alloc_impl(new_layout, zeroed)?;
|
let new_ptr = self.alloc_impl(new_layout, zeroed)?;
|
||||||
ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_mut_ptr(), old_size);
|
ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_mut_ptr(), old_size);
|
||||||
Allocator::deallocate(&self, ptr, old_layout);
|
Allocator::deallocate(self, ptr, old_layout);
|
||||||
Ok(new_ptr)
|
Ok(new_ptr)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -254,7 +254,7 @@ unsafe impl Allocator for System {
|
||||||
match new_layout.size() {
|
match new_layout.size() {
|
||||||
// SAFETY: conditions must be upheld by the caller
|
// SAFETY: conditions must be upheld by the caller
|
||||||
0 => unsafe {
|
0 => unsafe {
|
||||||
Allocator::deallocate(&self, ptr, old_layout);
|
Allocator::deallocate(self, ptr, old_layout);
|
||||||
Ok(NonNull::slice_from_raw_parts(new_layout.dangling(), 0))
|
Ok(NonNull::slice_from_raw_parts(new_layout.dangling(), 0))
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -274,9 +274,9 @@ unsafe impl Allocator for System {
|
||||||
// `new_ptr`. Thus, the call to `copy_nonoverlapping` is safe. The safety contract
|
// `new_ptr`. Thus, the call to `copy_nonoverlapping` is safe. The safety contract
|
||||||
// for `dealloc` must be upheld by the caller.
|
// for `dealloc` must be upheld by the caller.
|
||||||
new_size => unsafe {
|
new_size => unsafe {
|
||||||
let new_ptr = Allocator::allocate(&self, new_layout)?;
|
let new_ptr = Allocator::allocate(self, new_layout)?;
|
||||||
ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_mut_ptr(), new_size);
|
ptr::copy_nonoverlapping(ptr.as_ptr(), new_ptr.as_mut_ptr(), new_size);
|
||||||
Allocator::deallocate(&self, ptr, old_layout);
|
Allocator::deallocate(self, ptr, old_layout);
|
||||||
Ok(new_ptr)
|
Ok(new_ptr)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue