@@ -38,7 +38,8 @@ class Wasm3Engine final : public WasmEngine
3838
3939namespace
4040{
41- const void * env_adler32 (IM3Runtime /* runtime*/ , uint64_t * stack, void * mem, void * /* userdata*/ )
41+ const void * env_adler32 (
42+ IM3Runtime /* runtime*/ , IM3ImportContext /* context*/ , uint64_t * stack, void * mem)
4243{
4344 const uint32_t offset = static_cast <uint32_t >(stack[0 ]);
4445 const uint32_t length = static_cast <uint32_t >(stack[1 ]);
@@ -87,8 +88,11 @@ bool Wasm3Engine::instantiate(bytes_view wasm_binary)
8788 return false ;
8889 }
8990
90- auto ret = m3_LinkRawFunction (module , " env" , " adler32" , " i(ii)" , env_adler32);
91- return ret == m3Err_none || ret == m3Err_functionLookupFailed;
91+ auto const ret = m3_LinkRawFunction (module , " env" , " adler32" , " i(ii)" , env_adler32);
92+ if (ret != m3Err_none && ret != m3Err_functionLookupFailed)
93+ return false ;
94+
95+ return m3_RunStart (module ) == m3Err_none;
9296}
9397
9498bool Wasm3Engine::init_memory (fizzy::bytes_view memory)
@@ -132,14 +136,15 @@ WasmEngine::Result Wasm3Engine::execute(
132136
133137 // This ensures input count/type matches. For the return value we assume find_function did the
134138 // validation.
135- auto const result = m3_Call (function, static_cast <uint32_t >(args.size ()), argPtrs.data ());
136- if (result == m3Err_none)
139+ if (m3_Call (function, static_cast <uint32_t >(args.size ()), argPtrs.data ()) == m3Err_none)
137140 {
138141 if (m3_GetRetCount (function) == 0 )
139142 return {false , std::nullopt };
140143
141144 uint64_t ret_value = 0 ;
142- assert (m3_GetResultsV (function, &ret_value) == m3Err_none);
145+ [[maybe_unused]] auto const ret = m3_GetResultsV (function, &ret_value);
146+ // This should not fail.
147+ assert (ret == m3Err_none);
143148 return {false , ret_value};
144149 }
145150 return {true , std::nullopt };
0 commit comments