This commit is contained in:
Yota Toyama
2023-05-21 13:52:34 +10:00
parent a3a13f061f
commit 81df12684f

View File

@@ -86,16 +86,16 @@ impl Allocator {
pub unsafe fn register_finalizer<F: FnOnce(*mut c_void) + 'static>( pub unsafe fn register_finalizer<F: FnOnce(*mut c_void) + 'static>(
ptr: *const c_void, ptr: *const c_void,
finalizer: &'static F, finalizer: F,
) { ) {
extern "C" fn finalize<F: FnOnce(*mut c_void)>(ptr: *mut c_void, data: *mut c_void) { extern "C" fn finalize<F: FnOnce(*mut c_void)>(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( GC_register_finalizer(
ptr, ptr,
finalize::<F>, finalize::<F>,
finalizer as *const _ as *const _, Box::new(finalizer).into_raw() as *const _ as *const _,
null(), null(),
null(), null(),
); );