aboutsummaryrefslogtreecommitdiff
path: root/src/html
diff options
context:
space:
mode:
authorSamuel Tan <samueltan@gmail.com>2019-06-10 22:18:56 -0700
committerDmitri Shuralyov <dmitshur@golang.org>2019-06-17 19:12:05 +0000
commitdb042d2d42e1009bb9d6c12a7a018108638e1dae (patch)
tree5c19271495eaec41e5f9ea2dad96bcc9acd3eae6 /src/html
parent530097fe60c3d9feffabf52ea910bf35af9da6fb (diff)
downloadgo-db042d2d42e1009bb9d6c12a7a018108638e1dae.tar.gz
go-db042d2d42e1009bb9d6c12a7a018108638e1dae.zip
html/template: handle nil Error values in context.String
Add a special case to print a generic nil error when context.err is nil. Previously, this case was unchecked, leading to a call to (*Error).Error with a nil receiver, which was triggering a nil pointer access. However, this bug was masked by the panic-recovery code in package fmt. I tested this change by running `dlv test` in src/html/template, running the `continue` command, and verifying that no "bad access" errors are returned. Fixes #28854 Change-Id: I0b637b943de003d9efc294f6f1e49b793668d037 Reviewed-on: https://go-review.googlesource.com/c/go/+/181579 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Diffstat (limited to 'src/html')
-rw-r--r--src/html/template/context.go6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/html/template/context.go b/src/html/template/context.go
index 7ab3d1fed6..f7d4849928 100644
--- a/src/html/template/context.go
+++ b/src/html/template/context.go
@@ -26,7 +26,11 @@ type context struct {
}
func (c context) String() string {
- return fmt.Sprintf("{%v %v %v %v %v %v %v}", c.state, c.delim, c.urlPart, c.jsCtx, c.attr, c.element, c.err)
+ var err error
+ if c.err != nil {
+ err = c.err
+ }
+ return fmt.Sprintf("{%v %v %v %v %v %v %v}", c.state, c.delim, c.urlPart, c.jsCtx, c.attr, c.element, err)
}
// eq reports whether two contexts are equal.