Skip to content

Commit

Permalink
cmd/retro: moved back deferred error handler to start of main
Browse files Browse the repository at this point in the history
so that it can catch all errors.
  • Loading branch information
db47h committed Aug 9, 2016
1 parent 014db9f commit 43a0ee1
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 21 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/retro
43 changes: 22 additions & 21 deletions cmd/retro/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,27 @@ func port2Handler(w io.Writer) func(i *vm.Instance, v, port vm.Cell) error {
func main() {
// check exit condition
var err error
var proc *vm.Instance

// catch and log errors during run
defer func() {
if err == nil {
return
}
if !*debug {
fmt.Fprintf(os.Stderr, "\n%v\n", err)
os.Exit(1)
}
fmt.Fprintf(os.Stderr, "\n%+v\n", err)
if proc != nil {
if proc.PC < len(proc.Image) {
fmt.Fprintf(os.Stderr, "PC: %v (%v), Stack: %v, Ret: %v\n", proc.PC, proc.Image[proc.PC], proc.Data(), proc.Address())
} else {
fmt.Fprintf(os.Stderr, "PC: %v, Stack: %v\nRet: %v\n", proc.PC, proc.Data(), proc.Address())
}
}
os.Exit(1)
}()

flag.Parse()

Expand Down Expand Up @@ -115,31 +136,11 @@ func main() {
if err != nil {
return
}
proc, err := vm.New(img, *fileName, opts...)
proc, err = vm.New(img, *fileName, opts...)
if err != nil {
return
}

// catch any errors during run
defer func() {
if err == nil {
return
}
if !*debug {
fmt.Fprintf(os.Stderr, "\n%v\n", err)
os.Exit(1)
}
fmt.Fprintf(os.Stderr, "\n%+v\n", err)
if proc != nil {
if proc.PC < len(proc.Image) {
fmt.Fprintf(os.Stderr, "PC: %v (%v), Stack: %v, Ret: %v\n", proc.PC, proc.Image[proc.PC], proc.Data(), proc.Address())
} else {
fmt.Fprintf(os.Stderr, "PC: %v, Stack: %v\nRet: %v\n", proc.PC, proc.Data(), proc.Address())
}
}
os.Exit(1)
}()

if err = proc.Run(); err == io.EOF {
err = nil
}
Expand Down

0 comments on commit 43a0ee1

Please sign in to comment.