From e6c61c74ff8d5256a017631cdee08a0edab95237 Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Fri, 2 Oct 2020 16:33:03 -0700 Subject: [PATCH] Update boxed_vec to deal with boxed values --- lib/c-api/src/wasm_c_api/macros.rs | 6 ++++-- lib/c-api/src/wasm_c_api/module.rs | 1 - lib/c-api/src/wasm_c_api/types/function.rs | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) 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::>();