diff --git a/crates/c-api/src/instance.rs b/crates/c-api/src/instance.rs index 2f93661ecd..13fb96a369 100644 --- a/crates/c-api/src/instance.rs +++ b/crates/c-api/src/instance.rs @@ -98,13 +98,14 @@ pub(crate) fn handle_instantiate( *instance_ptr = i; None } - Err(e) => match e.downcast::() { - Ok(trap) => { - *trap_ptr = Box::into_raw(Box::new(wasm_trap_t::new(trap.into()))); + Err(e) => { + if e.is::() { + *trap_ptr = Box::into_raw(Box::new(wasm_trap_t::new(e))); None + } else { + Some(Box::new(e.into())) } - Err(e) => Some(Box::new(e.into())), - }, + } } }