wasmer_wasix/syscalls/wasix/
closure_free.rs1use crate::syscalls::*;
2
3#[instrument(level = "trace", fields(%closure), ret)]
7pub fn closure_free(
8 mut ctx: FunctionEnvMut<'_, WasiEnv>,
9 closure: u32,
10) -> Result<Errno, WasiError> {
11 WasiEnv::do_pending_operations(&mut ctx)?;
12
13 let (env, mut store) = ctx.data_and_store_mut();
14
15 let Some(linker) = env.inner().linker().cloned() else {
16 error!("Closures only work for dynamic modules.");
17 return Ok(Errno::Notsup);
18 };
19
20 let free_result = linker.free_closure_index(&mut ctx, closure);
21 if let Err(e) = free_result {
22 panic!("Failed to free closure index: {e}");
24 }
25
26 return Ok(Errno::Success);
27}