Make an attempt to pay for the gas prior to expanding the mem.
This commit is contained in:
		@@ -2,6 +2,7 @@ package vm
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/ethereum/go-ethereum/ethutil"
 | 
						"github.com/ethereum/go-ethereum/ethutil"
 | 
				
			||||||
@@ -44,6 +45,7 @@ func RunVmTest(p string, t *testing.T) {
 | 
				
			|||||||
	helper.CreateFileTests(t, p, &tests)
 | 
						helper.CreateFileTests(t, p, &tests)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for name, test := range tests {
 | 
						for name, test := range tests {
 | 
				
			||||||
 | 
							fmt.Println(name)
 | 
				
			||||||
		state := state.New(helper.NewTrie())
 | 
							state := state.New(helper.NewTrie())
 | 
				
			||||||
		for addr, account := range test.Pre {
 | 
							for addr, account := range test.Pre {
 | 
				
			||||||
			obj := StateObjectFromAccount(addr, account)
 | 
								obj := StateObjectFromAccount(addr, account)
 | 
				
			||||||
@@ -113,7 +115,7 @@ func TestEnvironmentalInfo(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestFlowOperation(t *testing.T) {
 | 
					func TestFlowOperation(t *testing.T) {
 | 
				
			||||||
	helper.Logger.SetLogLevel(5)
 | 
						//helper.Logger.SetLogLevel(5)
 | 
				
			||||||
	const fn = "../files/vmtests/vmIOandFlowOperationsTest.json"
 | 
						const fn = "../files/vmtests/vmIOandFlowOperationsTest.json"
 | 
				
			||||||
	RunVmTest(fn, t)
 | 
						RunVmTest(fn, t)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -124,6 +126,7 @@ func TestPushDupSwap(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestVMSha3(t *testing.T) {
 | 
					func TestVMSha3(t *testing.T) {
 | 
				
			||||||
 | 
						helper.Logger.SetLogLevel(5)
 | 
				
			||||||
	const fn = "../files/vmtests/vmSha3Test.json"
 | 
						const fn = "../files/vmtests/vmSha3Test.json"
 | 
				
			||||||
	RunVmTest(fn, t)
 | 
						RunVmTest(fn, t)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,7 +64,7 @@ func (c *Closure) GetOp(x int) OpCode {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *Closure) GetByte(x int) byte {
 | 
					func (c *Closure) GetByte(x int) byte {
 | 
				
			||||||
	if x < len(c.Code) {
 | 
						if x > -1 && x < len(c.Code) {
 | 
				
			||||||
		return c.Code[x]
 | 
							return c.Code[x]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -277,7 +277,6 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				addStepGasUsage(memGasUsage)
 | 
									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)
 | 
								return closure.Return(nil), OOG(gas, tmp)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mem.Resize(newMemSize.Uint64())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		switch op {
 | 
							switch op {
 | 
				
			||||||
		// 0x20 range
 | 
							// 0x20 range
 | 
				
			||||||
		case ADD:
 | 
							case ADD:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user