diff --git a/libethereum/State.cpp b/libethereum/State.cpp index b3c16f66a..4654c89d3 100644 --- a/libethereum/State.cpp +++ b/libethereum/State.cpp @@ -641,11 +641,11 @@ void State::executeBare(Transaction const& _t, Address _sender) if (balance(_sender) < _t.value + fee) throw NotEnoughCash(); - // Increment associated nonce for sender. - noteSending(_sender); - if (_t.receiveAddress) { + // Increment associated nonce for sender. + noteSending(_sender); + subBalance(_sender, _t.value + fee); addBalance(_t.receiveAddress, _t.value); @@ -659,7 +659,6 @@ void State::executeBare(Transaction const& _t, Address _sender) catch (VMException const& _e) { cnote << "VM Exception: " << _e.description(); - throw; } } } @@ -677,6 +676,9 @@ void State::executeBare(Transaction const& _t, Address _sender) if (isContractAddress(newAddress) || isNormalAddress(newAddress)) throw ContractAddressCollision(); + // Increment associated nonce for sender. + noteSending(_sender); + // All OK - set it up. m_cache[newAddress] = AddressState(0, 0, AddressType::Contract); auto& mem = m_cache[newAddress].memory();