diff --git a/lib/c-api/src/wasm_c_api/macros.rs b/lib/c-api/src/wasm_c_api/macros.rs index 0231205e3..afa81957d 100644 --- a/lib/c-api/src/wasm_c_api/macros.rs +++ b/lib/c-api/src/wasm_c_api/macros.rs @@ -131,12 +131,14 @@ macro_rules! wasm_declare_boxed_vec { // TODO: do this properly impl [] { - pub unsafe fn into_slice(&self) -> Option<&[*mut []]>{ + pub unsafe fn into_slice(&self) -> Option<&[Box<[]>]>{ if self.data.is_null() { return None; } - Some(::std::slice::from_raw_parts(self.data, self.size)) + let slice: &[*mut []] = ::std::slice::from_raw_parts(self.data, self.size); + let slice: &[Box<[]>] = ::std::mem::transmute(slice); + Some(slice) } } diff --git a/lib/c-api/src/wasm_c_api/module.rs b/lib/c-api/src/wasm_c_api/module.rs index 206d97382..627f932e4 100644 --- a/lib/c-api/src/wasm_c_api/module.rs +++ b/lib/c-api/src/wasm_c_api/module.rs @@ -3,7 +3,6 @@ use super::types::{ wasm_byte_vec_t, wasm_exporttype_t, wasm_exporttype_vec_t, wasm_importtype_t, wasm_importtype_vec_t, }; -use std::mem; use std::ptr::NonNull; use std::slice; use std::sync::Arc; diff --git a/lib/c-api/src/wasm_c_api/types/function.rs b/lib/c-api/src/wasm_c_api/types/function.rs index 699e86a66..7e95a39a2 100644 --- a/lib/c-api/src/wasm_c_api/types/function.rs +++ b/lib/c-api/src/wasm_c_api/types/function.rs @@ -42,13 +42,13 @@ unsafe fn wasm_functype_new_inner( let params: Vec = params .into_slice()? .iter() - .map(|&ptr| *ptr) + .map(|ptr| **ptr) .map(Into::into) .collect::>(); let results: Vec = results .into_slice()? .iter() - .map(|&ptr| *ptr) + .map(|ptr| **ptr) .map(Into::into) .collect::>();