|
|
|
@ -144,7 +144,7 @@ func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) ( |
|
|
|
|
defer func() { in.evm.depth-- }() |
|
|
|
|
|
|
|
|
|
// Make sure the readOnly is only set if we aren't in readOnly yet.
|
|
|
|
|
// This makes also sure that the readOnly flag isn't removed for child calls.
|
|
|
|
|
// This also makes sure that the readOnly flag isn't removed for child calls.
|
|
|
|
|
if readOnly && !in.readOnly { |
|
|
|
|
in.readOnly = true |
|
|
|
|
defer func() { in.readOnly = false }() |
|
|
|
@ -226,7 +226,7 @@ func (in *EVMInterpreter) Run(contract *Contract, input []byte, readOnly bool) ( |
|
|
|
|
} else if sLen > operation.maxStack { |
|
|
|
|
return nil, &ErrStackOverflow{stackLen: sLen, limit: operation.maxStack} |
|
|
|
|
} |
|
|
|
|
// If the operation is valid, enforce and write restrictions
|
|
|
|
|
// If the operation is valid, enforce write restrictions
|
|
|
|
|
if in.readOnly && in.evm.chainRules.IsByzantium { |
|
|
|
|
// If the interpreter is operating in readonly mode, make sure no
|
|
|
|
|
// state-modifying operation is performed. The 3rd stack item
|
|
|
|
|