diff --git a/lib/c-api/src/wasm_c_api/macros.rs b/lib/c-api/src/wasm_c_api/macros.rs index afa81957d..b7c8db87c 100644 --- a/lib/c-api/src/wasm_c_api/macros.rs +++ b/lib/c-api/src/wasm_c_api/macros.rs @@ -64,6 +64,16 @@ macro_rules! wasm_declare_vec { } } + impl [] { + pub unsafe fn into_slice_mut(&self) -> Option<&mut [[]]>{ + if self.data.is_null() { + return None; + } + + Some(::std::slice::from_raw_parts_mut(self.data, self.size)) + } + } + // TODO: investigate possible memory leak on `init` (owned pointer) #[no_mangle] pub unsafe extern "C" fn [](out: *mut [], length: usize, init: *mut []) {