Commit bad9738b authored by Abhinav Gupta's avatar Abhinav Gupta Committed by Russ Cox

xml: Fixed CDATA parsing.

    Fixes #128.

R=r, rsc
https://golang.org/cl/154126
parent 14a4ece9
......@@ -497,11 +497,11 @@ func (p *Parser) RawToken() (Token, os.Error) {
case '[': // <![
// Probably <![CDATA[.
for i := 0; i < 7; i++ {
for i := 0; i < 6; i++ {
if b, ok = p.getc(); !ok {
return nil, p.err
}
if b != "[CDATA["[i] {
if b != "CDATA["[i] {
p.err = SyntaxError("invalid <![ sequence");
return nil, p.err;
}
......
......@@ -24,7 +24,7 @@ const testInput = `
<inner/>
</outer>
<tag:name>
Some text here.
<![CDATA[Some text here.]]>
</tag:name>
</body><!-- missing final newline -->`
......@@ -52,7 +52,9 @@ var rawTokens = []Token{
EndElement{Name{"", "outer"}},
CharData(strings.Bytes("\n ")),
StartElement{Name{"tag", "name"}, nil},
CharData(strings.Bytes("\n Some text here.\n ")),
CharData(strings.Bytes("\n ")),
CharData(strings.Bytes("Some text here.")),
CharData(strings.Bytes("\n ")),
EndElement{Name{"tag", "name"}},
CharData(strings.Bytes("\n")),
EndElement{Name{"", "body"}},
......@@ -83,7 +85,9 @@ var cookedTokens = []Token{
EndElement{Name{"ns2", "outer"}},
CharData(strings.Bytes("\n ")),
StartElement{Name{"ns3", "name"}, nil},
CharData(strings.Bytes("\n Some text here.\n ")),
CharData(strings.Bytes("\n ")),
CharData(strings.Bytes("Some text here.")),
CharData(strings.Bytes("\n ")),
EndElement{Name{"ns3", "name"}},
CharData(strings.Bytes("\n")),
EndElement{Name{"ns2", "body"}},
......
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