From 62fd97a739fb02ec368f73ba51c7c23201206ae4 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Quiros Date: Wed, 28 Sep 2022 19:47:27 +0200 Subject: [PATCH] Skip fat pointers in event callback --- waku/src/events/mod.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/waku/src/events/mod.rs b/waku/src/events/mod.rs index e4a6d6c..4f62d13 100644 --- a/waku/src/events/mod.rs +++ b/waku/src/events/mod.rs @@ -52,5 +52,19 @@ pub fn waku_set_event_callback(mut callback: F) { let data: Signal = serde_json::from_str(raw_response).expect("Parsing signal to succeed"); callback(data); }; - unsafe { waku_sys::waku_set_event_callback(&mut callback as *mut _ as *mut std::ffi::c_void) }; + let mut callback_ptr: &mut dyn FnMut(*const c_char) = &mut callback; + unsafe { + waku_sys::waku_set_event_callback(&mut callback_ptr as *mut &mut _ as *mut std::ffi::c_void) + }; +} + +#[cfg(test)] +mod tests { + use crate::events::waku_set_event_callback; + + // TODO: how to actually send a signal and check if the callback is run? + #[test] + fn set_event_callback() { + waku_set_event_callback(|signal| {}); + } }