diff --git a/src/evm/opcode_handlers.cpp b/src/evm/opcode_handlers.cpp index 23141457f..75d9f5f83 100644 --- a/src/evm/opcode_handlers.cpp +++ b/src/evm/opcode_handlers.cpp @@ -344,7 +344,7 @@ void SarHandler::doExecute() { } } else { intx::uint256 IsNegative = (Value >> 255) & 1; - Res = IsNegative ? intx::uint256(-1) : intx::uint256(0); + Res = IsNegative ? ~intx::uint256(0) : intx::uint256(0); } Frame->push(Res); } diff --git a/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt b/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt index 297530314..a5f7e8fa6 100644 --- a/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt +++ b/tests/evmone_unittests/EVMOneInterpreterUnitTestsRunList.txt @@ -203,3 +203,4 @@ multi_vm/evm.storage/external_vm multi_vm/evm.exp/external_vm multi_vm/evm.exp_oog/external_vm multi_vm/evm.exp_pre_spurious_dragon/external_vm +multi_vm/evm.shift_overflow/external_vm