use bytemuck::TransparentWrapper; | |
#[repr(transparent)] | |
struct Wrap(Box<u32>); | |
// SAFETY: it's #[repr(transparent)] | |
unsafe impl TransparentWrapper<Box<u32>> for Wrap {} | |
fn main() { | |
let value = Box::new(5); | |
// This used to duplicate the wrapped value, creating a double free :( | |
Wrap::wrap(value); | |
} |