Skip to content

Commit fe52714

Browse files
committed
fix call
1 parent d2ace19 commit fe52714

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

core/vm/operations_acl.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,24 +252,27 @@ func makeSelfdestructGasFn(refundsEnabled bool) gasFunc {
252252
}
253253

254254
var (
255-
gasCallEIP7702 = makeCallVariantGasCallEIP7702(gasCall)
255+
innerGasCallEIP7702 = makeCallVariantGasCallEIP7702(gasCall)
256256
gasDelegateCallEIP7702 = makeCallVariantGasCallEIP7702(gasDelegateCall)
257257
gasStaticCallEIP7702 = makeCallVariantGasCallEIP7702(gasStaticCall)
258258
gasCallCodeEIP7702 = makeCallVariantGasCallEIP7702(gasCallCode)
259259
)
260260

261+
func gasCallEIP7702(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize uint64) (uint64, error) {
262+
transfersValue := !stack.Back(2).IsZero()
263+
if evm.readOnly && transfersValue {
264+
return 0, ErrWriteProtection
265+
}
266+
return innerGasCallEIP7702(evm, contract, stack, mem, memorySize)
267+
}
268+
261269
func makeCallVariantGasCallEIP7702(oldCalculator gasFunc) gasFunc {
262270
return func(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize uint64) (uint64, error) {
263271
var (
264-
total uint64 // total dynamic gas used
265-
addr = common.Address(stack.Back(1).Bytes20())
266-
transfersValue = !stack.Back(2).IsZero()
272+
total uint64 // total dynamic gas used
273+
addr = common.Address(stack.Back(1).Bytes20())
267274
)
268275

269-
if evm.readOnly && transfersValue {
270-
return 0, ErrWriteProtection
271-
}
272-
273276
// Check slot presence in the access list
274277
if !evm.StateDB.AddressInAccessList(addr) {
275278
evm.StateDB.AddAddressToAccessList(addr)

0 commit comments

Comments
 (0)