diff --git a/libraries/chain/db_block.cpp b/libraries/chain/db_block.cpp index 8029bea5..e8dd2483 100644 --- a/libraries/chain/db_block.cpp +++ b/libraries/chain/db_block.cpp @@ -458,6 +458,7 @@ void database::apply_block( const signed_block& next_block, uint32_t skip ) void database::_apply_block( const signed_block& next_block ) { try { + uint32_t next_block_num = next_block.block_num(); uint32_t skip = get_node_properties().skip_flags; _applied_ops.clear(); @@ -468,7 +469,7 @@ void database::_apply_block( const signed_block& next_block ) const auto& dynamic_global_props = get(dynamic_global_property_id_type()); bool maint_needed = (dynamic_global_props.next_maintenance_time <= next_block.timestamp); - _current_block_num = next_block.block_num(); + _current_block_num = next_block_num; _current_trx_in_block = 0; for( const auto& trx : next_block.transactions ) diff --git a/libraries/chain/db_market.cpp b/libraries/chain/db_market.cpp index d9ed6c57..b86959d2 100644 --- a/libraries/chain/db_market.cpp +++ b/libraries/chain/db_market.cpp @@ -89,7 +89,6 @@ void database::globally_settle_asset( const asset_object& mia, const price& sett void database::cancel_order(const force_settlement_object& order, bool create_virtual_op) { adjust_balance(order.owner, order.balance); - remove(order); if( create_virtual_op ) { @@ -99,6 +98,7 @@ void database::cancel_order(const force_settlement_object& order, bool create_vi vop.amount = order.balance; push_applied_operation( vop ); } + remove(order); } void database::cancel_order( const limit_order_object& order, bool create_virtual_op ) @@ -361,7 +361,6 @@ bool database::fill_order(const force_settlement_object& settle, const asset& pa }); filled = false; } else { - remove(settle); filled = true; } adjust_balance(settle.owner, receives - issuer_fees); @@ -369,6 +368,9 @@ bool database::fill_order(const force_settlement_object& settle, const asset& pa assert( pays.asset_id != receives.asset_id ); push_applied_operation( fill_order_operation{ settle.id, settle.owner, pays, receives, issuer_fees } ); + if (filled) + remove(settle); + return filled; } FC_CAPTURE_AND_RETHROW( (settle)(pays)(receives) ) }