forked from cerc-io/plugeth
PUSH gas fix
This commit is contained in:
parent
df648cbc60
commit
3ea8c7301e
@ -61,8 +61,8 @@ func baseCheck(op OpCode, stack *stack, gas *big.Int) error {
|
||||
if op >= PUSH1 && op <= PUSH32 {
|
||||
op = PUSH1
|
||||
}
|
||||
if op >= SWAP1 && op <= SWAP16 {
|
||||
op = SWAP1
|
||||
if op >= DUP1 && op <= DUP16 {
|
||||
op = DUP1
|
||||
}
|
||||
|
||||
if r, ok := _baseCheck[op]; ok {
|
||||
@ -71,7 +71,7 @@ func baseCheck(op OpCode, stack *stack, gas *big.Int) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if r.stackPush && len(stack.data)-r.stackPop == 1024 {
|
||||
if r.stackPush && len(stack.data)-r.stackPop+1 > 1024 {
|
||||
return fmt.Errorf("stack limit reached (%d)", maxStack)
|
||||
}
|
||||
|
||||
@ -154,6 +154,6 @@ var _baseCheck = map[OpCode]req{
|
||||
JUMPDEST: {0, GasJumpDest, false},
|
||||
SUICIDE: {1, Zero, false},
|
||||
RETURN: {2, Zero, false},
|
||||
PUSH1: {0, GasFastStep, true},
|
||||
PUSH1: {0, GasFastestStep, true},
|
||||
DUP1: {0, Zero, true},
|
||||
}
|
||||
|
@ -45,23 +45,7 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||
|
||||
self.Printf("(%d) (%x) %x (code=%d) gas: %v (d) %x", self.env.Depth(), caller.Address().Bytes()[:4], context.Address(), len(code), context.Gas, callData).Endl()
|
||||
|
||||
/*
|
||||
if self.Recoverable {
|
||||
// Recover from any require exception
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
self.Printf(" %v", r).Endl()
|
||||
|
||||
context.UseGas(context.Gas)
|
||||
|
||||
ret = context.Return(nil)
|
||||
|
||||
err = fmt.Errorf("%v", r)
|
||||
}
|
||||
}()
|
||||
}
|
||||
*/
|
||||
|
||||
// User defer pattern to check for an error and, based on the error being nil or not, use all gas and return.
|
||||
defer func() {
|
||||
if err != nil {
|
||||
self.Printf(" %v", err).Endl()
|
||||
|
Loading…
Reference in New Issue
Block a user