]> Cypherpunks repositories - gostls13.git/commitdiff
text/template: handle panic values that are not errors.
authorRémy Oudompheng <oudomphe@phare.normalesup.org>
Mon, 9 Jan 2012 20:54:31 +0000 (12:54 -0800)
committerRob Pike <r@golang.org>
Mon, 9 Jan 2012 20:54:31 +0000 (12:54 -0800)
The recover code assumes that the panic() argument was
an error, but it is usually a simple string.
Fixes #2663.

R=golang-dev, r, r, gri
CC=golang-dev, remy
https://golang.org/cl/5527046

src/pkg/text/template/exec.go

index acb88afee3684afa1e1bfb4222277ac7664d2285..2171b279beab6302f727aced111b84059c20b765 100644 (file)
@@ -78,10 +78,14 @@ func (s *state) error(err error) {
 func errRecover(errp *error) {
        e := recover()
        if e != nil {
-               if _, ok := e.(runtime.Error); ok {
+               switch err := e.(type) {
+               case runtime.Error:
+                       panic(e)
+               case error:
+                       *errp = err
+               default:
                        panic(e)
                }
-               *errp = e.(error)
        }
 }