mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 06:21:11 +00:00
Handle panics in native execution.
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
use std::panic::catch_unwind;
|
||||||
use primitives::contract::CallData;
|
use primitives::contract::CallData;
|
||||||
use state_machine::{Externalities, CodeExecutor};
|
use state_machine::{Externalities, CodeExecutor};
|
||||||
use error::{Error, ErrorKind, Result};
|
use error::{Error, ErrorKind, Result};
|
||||||
@@ -22,9 +23,8 @@ impl CodeExecutor for NativeExecutor {
|
|||||||
let native_equivalent = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm");
|
let native_equivalent = include_bytes!("../../wasm-runtime/target/wasm32-unknown-unknown/release/runtime_polkadot.compact.wasm");
|
||||||
if code == &native_equivalent[..] {
|
if code == &native_equivalent[..] {
|
||||||
runtime_support::with_externalities(ext, || match method {
|
runtime_support::with_externalities(ext, || match method {
|
||||||
// TODO: Panic handler that comes back with error.
|
"execute_block" => catch_unwind(|| runtime::execute_block(&data.0)).map_err(|_| ErrorKind::Runtime.into()),
|
||||||
"execute_block" => Ok(runtime::execute_block(&data.0)),
|
"execute_transaction" => catch_unwind(|| runtime::execute_transaction(&data.0)).map_err(|_| ErrorKind::Runtime.into()),
|
||||||
"execute_transaction" => Ok(runtime::execute_transaction(&data.0)),
|
|
||||||
_ => Err(ErrorKind::MethodNotFound(method.to_owned()).into()),
|
_ => Err(ErrorKind::MethodNotFound(method.to_owned()).into()),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user