diff options
author | obscuren <geffobscura@gmail.com> | 2014-12-02 03:49:56 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-12-02 03:49:56 +0800 |
commit | a22056db5988bfa2b1354e0092eabb734c30701c (patch) | |
tree | 3f85f85c7bf80422262c5c521e883aeb358dadc0 /vm | |
parent | beb7d35c4033063e4111a51ebf88fabb43bc22b8 (diff) | |
download | dexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.gz dexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.zst dexon-a22056db5988bfa2b1354e0092eabb734c30701c.zip |
Make an attempt to pay for the gas prior to expanding the mem.
Diffstat (limited to 'vm')
-rw-r--r-- | vm/closure.go | 2 | ||||
-rw-r--r-- | vm/vm_debug.go | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/vm/closure.go b/vm/closure.go index ef9bbca93..5bd8c1bb8 100644 --- a/vm/closure.go +++ b/vm/closure.go @@ -64,7 +64,7 @@ func (c *Closure) GetOp(x int) OpCode { } func (c *Closure) GetByte(x int) byte { - if x < len(c.Code) { + if x > -1 && x < len(c.Code) { return c.Code[x] } diff --git a/vm/vm_debug.go b/vm/vm_debug.go index b9c1d4bc6..4daa3ab5b 100644 --- a/vm/vm_debug.go +++ b/vm/vm_debug.go @@ -277,7 +277,6 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { addStepGasUsage(memGasUsage) - mem.Resize(newMemSize.Uint64()) } } @@ -295,6 +294,8 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { return closure.Return(nil), OOG(gas, tmp) } + mem.Resize(newMemSize.Uint64()) + switch op { // 0x20 range case ADD: |