From d02024929a3e617c16c5b33e1d245f23fa4f6c7b Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Tue, 16 Sep 2014 11:35:26 +0200
Subject: [PATCH] require 5 for post

---
 ethereum.go |  3 +--
 ethvm/vm.go | 11 +++++++----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/ethereum.go b/ethereum.go
index 8d62fa9f2..fdfb59b09 100644
--- a/ethereum.go
+++ b/ethereum.go
@@ -23,8 +23,7 @@ import (
 
 const (
 	seedTextFileUri string = "http://www.ethereum.org/servers.poc3.txt"
-	//seedNodeAddress        = "54.76.56.74:30303"
-	seedNodeAddress = "localhost:30303"
+	seedNodeAddress        = "54.76.56.74:30303"
 )
 
 var ethlogger = ethlog.NewLogger("SERV")
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)
 		}
 
-- 
GitLab