1
0
mirror of https://github.com/golang/go synced 2024-11-11 22:20:22 -07:00

text/template/parse: fix bug handling /*/

Incorrect syntax for comment was erroneously accepted.
Fixes #3919.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6453105
This commit is contained in:
Rob Pike 2012-08-09 19:24:46 -07:00
parent 4f308edc86
commit 2253f67157
2 changed files with 7 additions and 2 deletions

View File

@ -264,16 +264,17 @@ func lexText(l *lexer) stateFn {
// lexLeftDelim scans the left delimiter, which is known to be present.
func lexLeftDelim(l *lexer) stateFn {
if strings.HasPrefix(l.input[l.pos:], l.leftDelim+leftComment) {
l.pos += len(l.leftDelim)
if strings.HasPrefix(l.input[l.pos:], leftComment) {
return lexComment
}
l.pos += len(l.leftDelim)
l.emit(itemLeftDelim)
return lexInsideAction
}
// lexComment scans a comment. The left comment marker is known to be present.
func lexComment(l *lexer) stateFn {
l.pos += len(leftComment)
i := strings.Index(l.input[l.pos:], rightComment+l.rightDelim)
if i < 0 {
return l.errorf("unclosed comment")

View File

@ -203,6 +203,10 @@ var lexTests = []lexTest{
tRight,
tEOF,
}},
{"text with bad comment", "hello-{{/*/}}-world", []item{
{itemText, 0, "hello-"},
{itemError, 0, `unclosed comment`},
}},
}
// collect gathers the emitted items into a slice.