From 7e0e58f4411457472f2a407b4c675482bb8dbfc9 Mon Sep 17 00:00:00 2001 From: theoreticalbts Date: Tue, 15 Dec 2015 14:12:53 -0500 Subject: [PATCH] Discard from _applied_ops when proposal fails #481 --- libraries/chain/db_block.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/chain/db_block.cpp b/libraries/chain/db_block.cpp index 770951b6..c2685e8d 100644 --- a/libraries/chain/db_block.cpp +++ b/libraries/chain/db_block.cpp @@ -257,6 +257,7 @@ processed_transaction database::push_proposal(const proposal_object& proposal) eval_state.operation_results.reserve(proposal.proposed_transaction.operations.size()); processed_transaction ptrx(proposal.proposed_transaction); eval_state._trx = &ptrx; + size_t old_applied_ops_size = _applied_ops.size(); try { auto session = _undo_db.start_undo_session(true); @@ -265,6 +266,7 @@ processed_transaction database::push_proposal(const proposal_object& proposal) remove(proposal); session.merge(); } catch ( const fc::exception& e ) { + _applied_ops.resize( old_applied_ops_size ); elog( "e", ("e",e.to_detail_string() ) ); throw; }