Commit 0485ba72 authored by Russ Cox's avatar Russ Cox

xml: allow text segments to end at EOF

Fixes #674.

R=adg
CC=golang-dev
https://golang.org/cl/1018042
parent de921996
......@@ -75,7 +75,7 @@ call sites. I also wanted to verify that ExpandTabs was
not being used from outside intra_region_diff.py.
</summary></entry></feed>`
</summary></entry></feed> `
type Feed struct {
XMLName Name "http://www.w3.org/2005/Atom feed"
......
......@@ -758,9 +758,15 @@ func (p *Parser) text(quote int, cdata bool) []byte {
p.buf.Reset()
Input:
for {
b, ok := p.mustgetc()
b, ok := p.getc()
if !ok {
return nil
if cdata {
if p.err == os.EOF {
p.err = p.syntaxError("unexpected EOF in CDATA section")
}
return nil
}
break Input
}
// <![CDATA[ section ends with ]]>.
......
......@@ -102,7 +102,6 @@ var xmlInput = []string{
"<t",
"<t ",
"<t/",
"<t/>c",
"<!",
"<!-",
"<!--",
......@@ -124,8 +123,6 @@ var xmlInput = []string{
"<t/><![CDATA[d]]",
// other Syntax errors
" ",
">",
"<>",
"<t/a",
"<0 />",
......@@ -140,7 +137,6 @@ var xmlInput = []string{
"<t a=>",
"<t a=v>",
// "<![CDATA[d]]>", // let the Token() caller handle
"cdata",
"<t></e>",
"<t></>",
"<t></t!",
......@@ -369,3 +365,25 @@ func TestSyntaxErrorLineNum(t *testing.T) {
t.Error("SyntaxError didn't have correct line number.")
}
}
func TestTrailingRawToken(t *testing.T) {
input := `<FOO></FOO> `
p := NewParser(StringReader(input))
var err os.Error
for _, err = p.RawToken(); err == nil; _, err = p.RawToken() {
}
if err != os.EOF {
t.Fatalf("p.RawToken() = _, %v, want _, os.EOF", err)
}
}
func TestTrailingToken(t *testing.T) {
input := `<FOO></FOO> `
p := NewParser(StringReader(input))
var err os.Error
for _, err = p.Token(); err == nil; _, err = p.Token() {
}
if err != os.EOF {
t.Fatalf("p.Token() = _, %v, want _, os.EOF", err)
}
}
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