diff --git a/lib/runtime-c-api/src/import/mod.rs b/lib/runtime-c-api/src/import/mod.rs index a38645dd1..5b44eb2b5 100644 --- a/lib/runtime-c-api/src/import/mod.rs +++ b/lib/runtime-c-api/src/import/mod.rs @@ -315,7 +315,9 @@ pub unsafe extern "C" fn wasmer_import_object_iter_at_end( pub unsafe extern "C" fn wasmer_import_object_iter_destroy( import_object_iter: *mut wasmer_import_object_iter_t, ) { - let _ = Box::from_raw(import_object_iter as *mut WasmerImportObjectIterator); + if !import_object_iter.is_null() { + let _ = Box::from_raw(import_object_iter as *mut WasmerImportObjectIterator); + } } /// Frees the memory allocated in `wasmer_import_object_iter_next` @@ -327,6 +329,9 @@ pub unsafe extern "C" fn wasmer_import_object_imports_destroy( imports: *mut wasmer_import_t, imports_len: u32, ) { + if imports.is_null() { + return; + } let imports: &[wasmer_import_t] = &*slice::from_raw_parts_mut(imports, imports_len as usize); for import in imports { let _namespace: Vec = Vec::from_raw_parts( diff --git a/lib/runtime-c-api/tests/.gitignore b/lib/runtime-c-api/tests/.gitignore index 26a85acee..b64fa610c 100644 --- a/lib/runtime-c-api/tests/.gitignore +++ b/lib/runtime-c-api/tests/.gitignore @@ -25,3 +25,5 @@ test-tables test-validate test-context test-module-import-instantiate +test-wasi-import-object +