diff --git a/evm/src/cpu/kernel/asm/core/terminate.asm b/evm/src/cpu/kernel/asm/core/terminate.asm index a2a88835..46e44b1b 100644 --- a/evm/src/cpu/kernel/asm/core/terminate.asm +++ b/evm/src/cpu/kernel/asm/core/terminate.asm @@ -16,8 +16,13 @@ global sys_return: %stack (kexit_info, offset, size) -> (offset, size, kexit_info, offset, size) %add_or_fault DUP1 %ensure_reasonable_offset + // stack: offset+size, kexit_info, offset, size + DUP4 ISZERO %jumpi(return_zero_size) %update_mem_bytes - + %jump(return_after_gas) +return_zero_size: + POP +return_after_gas: // Load the parent's context. %mload_context_metadata(@CTX_METADATA_PARENT_CONTEXT) @@ -115,6 +120,13 @@ global sys_revert: %stack (kexit_info, offset, size) -> (offset, size, kexit_info, offset, size) %add_or_fault DUP1 %ensure_reasonable_offset + // stack: offset+size, kexit_info, offset, size + DUP4 ISZERO %jumpi(revert_zero_size) + %update_mem_bytes + %jump(revert_after_gas) +revert_zero_size: + POP +revert_after_gas: %update_mem_bytes // Load the parent's context.