diff --git a/crates/wasmparser/src/validator/component.rs b/crates/wasmparser/src/validator/component.rs index 02f43fd349..f6fd5d3a28 100644 --- a/crates/wasmparser/src/validator/component.rs +++ b/crates/wasmparser/src/validator/component.rs @@ -2118,9 +2118,11 @@ impl ComponentState { } self.cabi_memory_at(memory, offset)?; - - self.core_funcs - .push(types.intern_func_type(FuncType::new([ValType::I32; 2], [ValType::I32]), offset)); + let memory64 = self.memory_at(memory, offset)?.memory64; + let ty = if memory64 { ValType::I64 } else { ValType::I32 }; + self.core_funcs.push( + types.intern_func_type(FuncType::new([ValType::I32, ty], [ValType::I32]), offset), + ); Ok(()) } @@ -2138,9 +2140,11 @@ impl ComponentState { } self.cabi_memory_at(memory, offset)?; - - self.core_funcs - .push(types.intern_func_type(FuncType::new([ValType::I32; 2], [ValType::I32]), offset)); + let memory64 = self.memory_at(memory, offset)?.memory64; + let ty = if memory64 { ValType::I64 } else { ValType::I32 }; + self.core_funcs.push( + types.intern_func_type(FuncType::new([ValType::I32, ty], [ValType::I32]), offset), + ); Ok(()) } diff --git a/crates/wit-component/src/validation.rs b/crates/wit-component/src/validation.rs index d7565b5600..cbc5642115 100644 --- a/crates/wit-component/src/validation.rs +++ b/crates/wit-component/src/validation.rs @@ -634,6 +634,7 @@ impl ImportMap { } if let Some(info) = names.waitable_set_wait(name) { + // [ValType::I32, Addrtype] let expected = FuncType::new([ValType::I32; 2], [ValType::I32]); validate_func_sig(name, &expected, ty)?; return Ok(Import::WaitableSetWait { @@ -642,6 +643,7 @@ impl ImportMap { } if let Some(info) = names.waitable_set_poll(name) { + // [ValType::I32, Addrtype let expected = FuncType::new([ValType::I32; 2], [ValType::I32]); validate_func_sig(name, &expected, ty)?; return Ok(Import::WaitableSetPoll {