diff --git a/src/lib.rs b/src/lib.rs index 4f92995..6110a20 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -86,16 +86,16 @@ impl Allocator { pub unsafe fn register_finalizer( ptr: *const c_void, - finalizer: &'static F, + finalizer: F, ) { extern "C" fn finalize(ptr: *mut c_void, data: *mut c_void) { - (*(data as *mut F))(ptr) + (unsafe { Box::from_raw(data as *mut F) })(ptr) } GC_register_finalizer( ptr, finalize::, - finalizer as *const _ as *const _, + Box::new(finalizer).into_raw() as *const _ as *const _, null(), null(), );