drop refixed

This commit is contained in:
EvilMuffinHa 2022-08-02 20:51:21 -04:00
parent a5620cdda9
commit 8718d65f90

View File

@ -44,10 +44,8 @@ impl Drop for SmallInt {
fn drop(&mut self) { fn drop(&mut self) {
if let Self::Heap((r, s)) = self { if let Self::Heap((r, s)) = self {
let size = usize::try_from(s.abs()).unwrap(); let size = usize::try_from(s.abs()).unwrap();
let mut slice = unsafe { core::slice::from_raw_parts(r, size) }; let slice = unsafe { core::slice::from_raw_parts_mut(*r, size) };
unsafe { unsafe { std::mem::drop(Box::from_raw(slice)) }
core::ptr::drop_in_place(&mut slice);
}
} }
} }
@ -96,7 +94,7 @@ impl From<u128> for SmallInt {
while v != 0 { while v != 0 {
vec.push(v as u32); vec.push(v as u32);
v = (v >> 1) >> (32 - 1); v >>= 32;
} }
let mut slice = ManuallyDrop::new(vec.into_boxed_slice()); let mut slice = ManuallyDrop::new(vec.into_boxed_slice());
SmallInt::Heap((slice.as_mut_ptr(), isize::try_from(slice.len()).unwrap())) SmallInt::Heap((slice.as_mut_ptr(), isize::try_from(slice.len()).unwrap()))