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