Skip to content

Commit

Permalink
fix: nil recover case
Browse files Browse the repository at this point in the history
  • Loading branch information
nrwiersma committed May 29, 2020
1 parent 5d78c8a commit 56d88ef
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 5 deletions.
15 changes: 15 additions & 0 deletions _test/recover2.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package main

func main() {
println("hello")

var r interface{} = 1
r = recover()
if r == nil {
println("world")
}
}

// Output:
// hello
// world
6 changes: 1 addition & 5 deletions interp/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -459,13 +459,9 @@ func _println(n *node) {
func _recover(n *node) {
tnext := getExec(n.tnext)
dest := genValue(n)
var err error
nilErr := reflect.ValueOf(valueInterface{n, reflect.ValueOf(&err).Elem()})

n.exec = func(f *frame) bltn {
if f.anc.recovered == nil {
dest(f).Set(nilErr)
} else {
if f.anc.recovered != nil {
dest(f).Set(reflect.ValueOf(valueInterface{n, reflect.ValueOf(f.anc.recovered)}))
f.anc.recovered = nil
}
Expand Down

0 comments on commit 56d88ef

Please sign in to comment.