mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-08 13:48:26 +00:00
feat(c-api) Transmute boxed vecs to Vec<Option<Box<T>>> when deleting.
It's a safer way to handle partially uninitialized boxed vector, since it protects against based deletion for every item.
This commit is contained in:
@@ -345,13 +345,7 @@ See the [`wasm_" $name "_vec_t`] type to get an example."]
|
||||
if let Some(vec) = ptr {
|
||||
if !vec.data.is_null() {
|
||||
let data: Vec<*mut [<wasm_ $name _t>]> = Vec::from_raw_parts(vec.data, vec.size, vec.size);
|
||||
|
||||
// If the vector has been initialized (we check
|
||||
// only the first item), we can transmute items to
|
||||
// `Box`es.
|
||||
if vec.size > 0 && !data[0].is_null() {
|
||||
let _data: Vec<Box<[<wasm_ $name _t>]>> = ::std::mem::transmute(data);
|
||||
}
|
||||
let _data: Vec<Option<Box<[<wasm_ $name _t>]>>> = ::std::mem::transmute(data);
|
||||
|
||||
vec.data = ::std::ptr::null_mut();
|
||||
vec.size = 0;
|
||||
|
||||
Reference in New Issue
Block a user