]> Cypherpunks repositories - gostls13.git/commit
html/template: always write untyped nil as JS null
authorDaniel Martí <mvdan@mvdan.cc>
Wed, 25 Apr 2018 02:45:53 +0000 (11:45 +0900)
committerDaniel Martí <mvdan@mvdan.cc>
Wed, 9 May 2018 04:09:29 +0000 (04:09 +0000)
commit23e9dc79941be24d381d2e2c85600d4a3d0d6921
tree89ccb2012f827e87fcca5c30a8285d1a4dd518b6
parentc1492b6bd0735505d65a93016bb172f41b7a1924
html/template: always write untyped nil as JS null

text/template recently added support for passing untyped nil as function
call arguments, as those would be mixed up with "missing argument"
values before. See CL 95215.

html/template now needs a small change to adapt to that new possibility.
In particular, when printing values as JS bytes, its code was written
under the assumption that the values would never be untyped nil - that
is, the reflect.Value would always be valid.

Short-circuit indirectToJSONMarshaler on an untyped nil, to avoid the
panic and fall back to the existing " null " output. Before this change
and on 1.10, printing a typed nil and an untyped nil resulted in:

null ""

After this change, one will get:

null null

Fixes #24717.

Change-Id: I03cd10ef64b96e837bacc9ccf4cf25624d80de1c
Reviewed-on: https://go-review.googlesource.com/109215
Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rhys Hiltner <rhys@justin.tv>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/html/template/js.go
src/html/template/js_test.go