From 3c3292d505b1c857f7fa28da0d37e3982ef5f8b5 Mon Sep 17 00:00:00 2001 From: obscuren Date: Thu, 24 Jul 2014 12:12:00 +0200 Subject: [PATCH] Added recoverable option --- ethvm/vm.go | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/ethvm/vm.go b/ethvm/vm.go index e159d8ff1..b81c8a189 100644 --- a/ethvm/vm.go +++ b/ethvm/vm.go @@ -37,6 +37,8 @@ type Vm struct { BreakPoints []int64 Stepping bool Fn string + + Recoverable bool } type Environment interface { @@ -62,18 +64,20 @@ func New(env Environment) *Vm { lt = LogTyDiff } - return &Vm{env: env, logTy: lt} + return &Vm{env: env, logTy: lt, Recoverable: true} } func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) { - // Recover from any require exception - defer func() { - if r := recover(); r != nil { - ret = closure.Return(nil) - err = fmt.Errorf("%v", r) - vmlogger.Errorln("vm err", err) - } - }() + if self.Recoverable { + // Recover from any require exception + defer func() { + if r := recover(); r != nil { + ret = closure.Return(nil) + err = fmt.Errorf("%v", r) + vmlogger.Errorln("vm err", err) + } + }() + } // Debug hook if self.Dbg != nil {