diff options
| author | Rémy Oudompheng <oudomphe@phare.normalesup.org> | 2012-01-09 12:54:31 -0800 |
|---|---|---|
| committer | Rob Pike <r@golang.org> | 2012-01-09 12:54:31 -0800 |
| commit | f5d024a74695510fcb0890807849ec95253a56cd (patch) | |
| tree | 57ed53cb8d689169b80f4f439922c1fcabe0ad8d /src/pkg/text/template | |
| parent | 793768e9d550d15f6b07eac7e587a090ffad0d41 (diff) | |
| download | go-f5d024a74695510fcb0890807849ec95253a56cd.tar.xz | |
text/template: handle panic values that are not errors.
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
Diffstat (limited to 'src/pkg/text/template')
| -rw-r--r-- | src/pkg/text/template/exec.go | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/pkg/text/template/exec.go b/src/pkg/text/template/exec.go index acb88afee3..2171b279be 100644 --- a/src/pkg/text/template/exec.go +++ b/src/pkg/text/template/exec.go @@ -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) } } |
