aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/text/template/exec.go
diff options
context:
space:
mode:
authorRémy Oudompheng <oudomphe@phare.normalesup.org>2012-01-09 12:54:31 -0800
committerRob Pike <r@golang.org>2012-01-09 12:54:31 -0800
commitf5d024a74695510fcb0890807849ec95253a56cd (patch)
tree57ed53cb8d689169b80f4f439922c1fcabe0ad8d /src/pkg/text/template/exec.go
parent793768e9d550d15f6b07eac7e587a090ffad0d41 (diff)
downloadgo-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/exec.go')
-rw-r--r--src/pkg/text/template/exec.go8
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)
}
}