diff --git a/nimbus/evm/interpreter/op_handlers/oph_memory.nim b/nimbus/evm/interpreter/op_handlers/oph_memory.nim index e6c71c1ab..74ee84357 100644 --- a/nimbus/evm/interpreter/op_handlers/oph_memory.nim +++ b/nimbus/evm/interpreter/op_handlers/oph_memory.nim @@ -289,9 +289,9 @@ const tloadOp: Vm2OpFn = proc (k: var Vm2Ctx) = ## 0x5c, Load word from transient storage. let - slot = k.cpt.stack.peek() + slot = k.cpt.stack.popInt() val = k.cpt.getTransientStorage(slot) - k.cpt.stack.top(val) + k.cpt.stack.push: val tstoreOp: Vm2OpFn = proc (k: var Vm2Ctx) = ## 0x5d, Save word to transient storage. diff --git a/tests/test_op_memory.nim b/tests/test_op_memory.nim index 060192bbc..390fa1e2a 100644 --- a/tests/test_op_memory.nim +++ b/tests/test_op_memory.nim @@ -920,5 +920,27 @@ proc opMemoryMain*() = "0x0000010203040506070000000000000000000000000000000000000000000000" fork: Cancun + assembler: + title: "TSTORE/TLOAD" + code: + PUSH1 "0xAA" + PUSH1 "0xBB" + TSTORE + PUSH1 "0xBB" + TLOAD + stack: + "0x00000000000000000000000000000000000000000000000000000000000000AA" + fork: Cancun + + assembler: + title: "TLOAD stack underflow not crash" + code: + PUSH1 "0xAA" + PUSH1 "0xBB" + TSTORE + TLOAD + success: false + fork: Cancun + when isMainModule: opMemoryMain()