diff options
Diffstat (limited to 'plugins/warp/src/plugin/ffi')
| -rw-r--r-- | plugins/warp/src/plugin/ffi/container.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/plugins/warp/src/plugin/ffi/container.rs b/plugins/warp/src/plugin/ffi/container.rs index 21ad4dc0..4de6bab3 100644 --- a/plugins/warp/src/plugin/ffi/container.rs +++ b/plugins/warp/src/plugin/ffi/container.rs @@ -36,6 +36,27 @@ pub unsafe extern "C" fn BNWARPContainerGetName(container: *mut BNWARPContainer) } #[no_mangle] +pub unsafe extern "C" fn BNWARPContainerFetchFunctions( + container: *mut BNWARPContainer, + target: *mut BNWARPTarget, + guids: *const BNWARPFunctionGUID, + count: usize, +) { + let arc_container = ManuallyDrop::new(Arc::from_raw(container)); + let Ok(mut container) = arc_container.write() else { + return; + }; + + let target = unsafe { ManuallyDrop::new(Arc::from_raw(target)) }; + + let guids = unsafe { std::slice::from_raw_parts(guids, count) }; + + if let Err(e) = container.fetch_functions(&target, guids) { + log::error!("Failed to fetch functions: {}", e); + } +} + +#[no_mangle] pub unsafe extern "C" fn BNWARPContainerGetSources( container: *mut BNWARPContainer, count: *mut usize, |
