mirror of
https://github.com/status-im/nimbus-eth1.git
synced 2025-01-10 20:36:31 +00:00
2a7ccceb3e
The account database code is not supposed to raise exceptions in the EVM, and the behaviour is not well defined if it does. It isn't compliant with EVMC spec either. But that will be dealt with properly when the account state-cache is dealt with, as there is some work to be done on it. Meanwhile, if it raises in code under `chainTo` and then `(continuation)()`, the behaviour was changed slightly by the stack-shrink patches. Before those patches, an exception after the recursion-point was converted to `c.setError` "Opcode Dispatch Error" in `executeOpcodes. After, it would propagate out, a different behaviour. (It still correctly walked the chain of `c.dispose()` calls to clean up.) It's easy to restore the original behaviour just by moving the continuation call, so let's do that. Signed-off-by: Jamie Lokier <jamie@shareable.org>