diff --git a/crates/api/src/values.rs b/crates/api/src/values.rs index 8d1d7f55be40..6eb8004d9f5a 100644 --- a/crates/api/src/values.rs +++ b/crates/api/src/values.rs @@ -216,7 +216,7 @@ pub(crate) fn from_checked_anyfunc( store: &Store, ) -> Val { if item.type_index == wasmtime_runtime::VMSharedSignatureIndex::default() { - Val::AnyRef(AnyRef::Null); + return Val::AnyRef(AnyRef::Null); } let instance_handle = unsafe { wasmtime_runtime::InstanceHandle::from_vmctx(item.vmctx) }; let export = wasmtime_runtime::ExportFunction { diff --git a/tests/all/main.rs b/tests/all/main.rs index 95b7d6ba44c9..e7409c21d2d2 100644 --- a/tests/all/main.rs +++ b/tests/all/main.rs @@ -14,6 +14,7 @@ mod linker; mod memory_creator; mod name; mod stack_overflow; +mod table; mod traps; mod use_after_drop; mod wast; diff --git a/tests/all/table.rs b/tests/all/table.rs new file mode 100644 index 000000000000..8408cd905106 --- /dev/null +++ b/tests/all/table.rs @@ -0,0 +1,13 @@ +use wasmtime::*; + +#[test] +fn get_none() { + let store = Store::default(); + let ty = TableType::new(ValType::FuncRef, Limits::new(1, None)); + let table = Table::new(&store, ty, Val::AnyRef(AnyRef::Null)).unwrap(); + match table.get(0) { + Some(Val::AnyRef(AnyRef::Null)) => {} + _ => panic!(), + } + assert!(table.get(1).is_none()); +}