aboutsummaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-12-02 03:49:56 +0800
committerobscuren <geffobscura@gmail.com>2014-12-02 03:49:56 +0800
commita22056db5988bfa2b1354e0092eabb734c30701c (patch)
tree3f85f85c7bf80422262c5c521e883aeb358dadc0 /vm
parentbeb7d35c4033063e4111a51ebf88fabb43bc22b8 (diff)
downloaddexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar
dexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.gz
dexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.bz2
dexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.lz
dexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.xz
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.go2
-rw-r--r--vm/vm_debug.go3
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: