]> Cypherpunks repositories - gostls13.git/commit
text/template: never call reflect.Zero(nil)
authorDaniel Martí <mvdan@mvdan.cc>
Sun, 17 Dec 2017 22:32:15 +0000 (22:32 +0000)
committerDaniel Martí <mvdan@mvdan.cc>
Tue, 13 Feb 2018 22:18:21 +0000 (22:18 +0000)
commit618f88d847af9a060a14794859d4f1ea51a08006
tree0f8ecfedc871e621f62720e08977a16376eeb786
parent0ed5bec951e3068df3201254f615b5ad1d429ee0
text/template: never call reflect.Zero(nil)

It makes no sense to try to get the zero value of a nil type, hence the
panic. When we have a nil type, use reflect.ValueOf(nil) instead.

This was showing itself if one used a missing field on the data between
parentheses, when the data was a nil interface:

t := template.Must(template.New("test").Parse(`{{ (.).foo }}`))
var v interface{}
t.Execute(os.Stdout, v)

Resulting in:

panic: reflect: Zero(nil) [recovered]
panic: reflect: Zero(nil)

Fixes #21171.

Change-Id: Ifcc4a0c67e6df425b65bc9f82fde6fcf03828579
Reviewed-on: https://go-review.googlesource.com/84482
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
src/text/template/exec.go
src/text/template/exec_test.go