From 807bc242e967b5840227797c7a249a293f546a67 Mon Sep 17 00:00:00 2001 From: Roman Steiner Date: Tue, 25 Feb 2025 10:50:32 +0100 Subject: [PATCH] box the progress callback closure - fixes #134 --- src/whisper_params.rs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/whisper_params.rs b/src/whisper_params.rs index 1bb2808..9c287d7 100644 --- a/src/whisper_params.rs +++ b/src/whisper_params.rs @@ -575,11 +575,13 @@ impl<'a, 'b> FullParams<'a, 'b> { } match closure.into() { - Some(mut closure) => { - self.fp.progress_callback = Some(trampoline::); - self.fp.progress_callback_user_data = &mut closure as *mut F as *mut c_void; - // store the closure internally to make sure that the pointer above remains valid - self.progess_callback_safe = Some(Arc::new(Box::new(closure))); + Some(closure) => { + self.fp.progress_callback = Some(trampoline::>); + let boxed_closure = Box::new(closure) as Box; + let boxed_closure = Box::new(boxed_closure); + let raw_ptr = Box::into_raw(boxed_closure); + self.fp.progress_callback_user_data = raw_ptr as *mut c_void; + self.progess_callback_safe = None; } None => { self.fp.progress_callback = None;