bucket_map: get_from_bytes should check alignment (#31444)
This commit is contained in:
parent
d6f65ccc27
commit
26809522b7
|
@ -426,12 +426,14 @@ impl<T: Copy + 'static> IndexEntryPlaceInBucket<T> {
|
||||||
fn get_from_bytes<T>(item_slice: &[u8]) -> &T {
|
fn get_from_bytes<T>(item_slice: &[u8]) -> &T {
|
||||||
debug_assert!(std::mem::size_of::<T>() <= item_slice.len());
|
debug_assert!(std::mem::size_of::<T>() <= item_slice.len());
|
||||||
let item = item_slice.as_ptr() as *const T;
|
let item = item_slice.as_ptr() as *const T;
|
||||||
|
debug_assert!(item as usize % std::mem::align_of::<T>() == 0);
|
||||||
unsafe { &*item }
|
unsafe { &*item }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_mut_from_bytes<T>(item_slice: &mut [u8]) -> &mut T {
|
fn get_mut_from_bytes<T>(item_slice: &mut [u8]) -> &mut T {
|
||||||
debug_assert!(std::mem::size_of::<T>() <= item_slice.len());
|
debug_assert!(std::mem::size_of::<T>() <= item_slice.len());
|
||||||
let item = item_slice.as_mut_ptr() as *mut T;
|
let item = item_slice.as_mut_ptr() as *mut T;
|
||||||
|
debug_assert!(item as usize % std::mem::align_of::<T>() == 0);
|
||||||
unsafe { &mut *item }
|
unsafe { &mut *item }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue