Commit 2253f671 authored by Rob Pike's avatar Rob Pike

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
parent 4f308edc
...@@ -264,16 +264,17 @@ func lexText(l *lexer) stateFn { ...@@ -264,16 +264,17 @@ func lexText(l *lexer) stateFn {
// lexLeftDelim scans the left delimiter, which is known to be present. // lexLeftDelim scans the left delimiter, which is known to be present.
func lexLeftDelim(l *lexer) stateFn { 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 return lexComment
} }
l.pos += len(l.leftDelim)
l.emit(itemLeftDelim) l.emit(itemLeftDelim)
return lexInsideAction return lexInsideAction
} }
// lexComment scans a comment. The left comment marker is known to be present. // lexComment scans a comment. The left comment marker is known to be present.
func lexComment(l *lexer) stateFn { func lexComment(l *lexer) stateFn {
l.pos += len(leftComment)
i := strings.Index(l.input[l.pos:], rightComment+l.rightDelim) i := strings.Index(l.input[l.pos:], rightComment+l.rightDelim)
if i < 0 { if i < 0 {
return l.errorf("unclosed comment") return l.errorf("unclosed comment")
......
...@@ -203,6 +203,10 @@ var lexTests = []lexTest{ ...@@ -203,6 +203,10 @@ var lexTests = []lexTest{
tRight, tRight,
tEOF, tEOF,
}}, }},
{"text with bad comment", "hello-{{/*/}}-world", []item{
{itemText, 0, "hello-"},
{itemError, 0, `unclosed comment`},
}},
} }
// collect gathers the emitted items into a slice. // collect gathers the emitted items into a slice.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment