mirror of
https://github.com/mii443/wasmer.git
synced 2025-08-30 04:09:28 +00:00
Merge #1751
1751: feat(c-api) Correctly implement “trap” in `wasm_func_new*` r=Hywan a=Hywan The implementation of “trap” in `wasm_func_new` was “incorrect”. It's more idiomatic to return a `RuntimeError` than raising it in this case, so that we don't duplicate locations where runtime errors are raised. The implementation of “trap” in `wasm_func_new_with_env` was missing. This patch implements a similar strategy than the sibling function. Fixes https://github.com/wasmerio/wasmer/issues/1744. Co-authored-by: Ivan Enderlin <ivan@mnt.io>
This commit is contained in:
12
lib/c-api/src/wasm_c_api/externals/function.rs
vendored
12
lib/c-api/src/wasm_c_api/externals/function.rs
vendored
@ -60,7 +60,8 @@ pub unsafe extern "C" fn wasm_func_new(
|
||||
|
||||
if !trap.is_null() {
|
||||
let trap: Box<wasm_trap_t> = Box::from_raw(trap);
|
||||
RuntimeError::raise(Box::new(trap.inner));
|
||||
|
||||
return Err(trap.inner);
|
||||
}
|
||||
|
||||
let processed_results = results
|
||||
@ -110,8 +111,13 @@ pub unsafe extern "C" fn wasm_func_new_with_env(
|
||||
]
|
||||
.into();
|
||||
|
||||
let _traps = callback(*env, &processed_args, &mut results);
|
||||
// TODO: do something with `traps`
|
||||
let trap = callback(*env, &processed_args, &mut results);
|
||||
|
||||
if !trap.is_null() {
|
||||
let trap: Box<wasm_trap_t> = Box::from_raw(trap);
|
||||
|
||||
return Err(trap.inner);
|
||||
}
|
||||
|
||||
let processed_results = results
|
||||
.into_slice()
|
||||
|
Reference in New Issue
Block a user