aboutsummaryrefslogtreecommitdiffstats
path: root/ethvm/vm.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethvm/vm.go')
-rw-r--r--ethvm/vm.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/ethvm/vm.go b/ethvm/vm.go
index cfba3820b..2a4fddbc5 100644
--- a/ethvm/vm.go
+++ b/ethvm/vm.go
@@ -63,7 +63,7 @@ func New(env Environment) *Vm {
lt = LogTyDiff
}
- return &Vm{env: env, logTy: lt, Recoverable: false, queue: list.New()}
+ return &Vm{env: env, logTy: lt, Recoverable: true, queue: list.New()}
}
func calcMemSize(off, l *big.Int) *big.Int {
@@ -200,7 +200,7 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
newMemSize = calcMemSize(stack.Peek(), stack.data[stack.Len()-2])
case CALLDATACOPY:
- require(3)
+ require(2)
newMemSize = calcMemSize(stack.Peek(), stack.data[stack.Len()-3])
case CODECOPY:
@@ -210,7 +210,7 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
case EXTCODECOPY:
require(4)
- newMemSize = calcMemSize(stack.data[stack.Len()-1], stack.data[stack.Len()-4])
+ newMemSize = calcMemSize(stack.data[stack.Len()-2], stack.data[stack.Len()-4])
case CALL, CALLSTATELESS:
require(7)
gas.Set(GasCall)
@@ -832,7 +832,7 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
}
case POST:
- require(6)
+ require(5)
self.Endl()
@@ -872,6 +872,9 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
default:
vmlogger.Debugf("(pc) %-3v Invalid opcode %x\n", pc, op)
+ // XXX Really?
+ closure.UseGas(closure.Gas)
+
return closure.Return(nil), fmt.Errorf("Invalid opcode %x", op)
}