diff --git a/libraries/chain/include/eos/chain/chain_controller.hpp b/libraries/chain/include/eos/chain/chain_controller.hpp index e43b9742eddd0030a334f69b7d2ff9585b2fb10e..70f0459e0065d337399ce70aa9086487021910e8 100644 --- a/libraries/chain/include/eos/chain/chain_controller.hpp +++ b/libraries/chain/include/eos/chain/chain_controller.hpp @@ -45,7 +45,10 @@ namespace eosio { namespace chain { uint32_t create_block_txn_execution_time, const txn_msg_limits& rate_limit, const applied_irreverisable_block_func& applied_func = {}); - chain_controller(chain_controller&&) = default; + chain_controller(const chain_controller&) = delete; + chain_controller(chain_controller&&) = delete; + chain_controller& operator=(const chain_controller&) = delete; + chain_controller& operator=(chain_controller&&) = delete; ~chain_controller(); /** diff --git a/plugins/chain_plugin/chain_plugin.cpp b/plugins/chain_plugin/chain_plugin.cpp index 5968fde384735fd24c9f1c377d41c282d24b6dfd..a081348558a6581aaecb2fc6ba2341c30c704cb5 100644 --- a/plugins/chain_plugin/chain_plugin.cpp +++ b/plugins/chain_plugin/chain_plugin.cpp @@ -54,7 +54,7 @@ public: fc::optional fork_db; fc::optional block_logger; - fc::optional chain; + std::unique_ptr chain; chain_id_type chain_id; uint32_t rcvd_block_txn_execution_time; uint32_t txn_execution_time; @@ -225,13 +225,13 @@ void chain_plugin::plugin_startup() my->fork_db = fork_database(); my->block_logger = block_log(my->block_log_dir); my->chain_id = genesis.compute_chain_id(); - my->chain = chain_controller(db, *my->fork_db, *my->block_logger, - initializer, native_contract::make_administrator(), - my->txn_execution_time, - my->rcvd_block_txn_execution_time, - my->create_block_txn_execution_time, - my->cfg_txn_msg_limits, - applied_func); + my->chain.reset(new chain_controller(db, *my->fork_db, *my->block_logger, + initializer, native_contract::make_administrator(), + my->txn_execution_time, + my->rcvd_block_txn_execution_time, + my->create_block_txn_execution_time, + my->cfg_txn_msg_limits, + applied_func)); if(!my->readonly) { ilog("starting chain in read/write mode");