fix vm oog problem

This commit is contained in:
andri lim 2019-02-20 19:31:17 +07:00 committed by zah
parent dcf7699358
commit b198ffee2d
1 changed files with 8 additions and 2 deletions

View File

@ -590,6 +590,8 @@ op create, inline = false, value, startPosition, size:
push: 0
else:
push: contractAddress
if not childComputation.shouldBurnGas:
computation.gasMeter.returnGas(childComputation.gasMeter.gasRemaining)
proc callParams(computation: var BaseComputation): (UInt256, UInt256, EthAddress, EthAddress, EthAddress, UInt256, UInt256, UInt256, UInt256, MsgFlags) =
@ -710,8 +712,12 @@ template genCall(callName: untyped, opCode: Op): untyped =
))
trace "Call (" & callName.astToStr & ")", childGasLimit, childGasFee
if childGasFee >= 0:
computation.gasMeter.consumeGas(childGasFee, reason = $opCode)
if childGasFee < 0 and childGasLimit <= 0:
raise newException(OutOfGas, "Gas not enough to perform calculation (" & callName.astToStr & ")")
computation.memory.extend(memInPos, memInLen)
computation.memory.extend(memOutPos, memOutLen)