xml: allow text segments to end at EOF

Fixes #674.

R=adg
CC=golang-dev
https://golang.org/cl/1018042
This commit is contained in:
Russ Cox 2010-04-28 19:29:20 -07:00
parent de92199648
commit 0485ba72c3
3 changed files with 31 additions and 7 deletions

View file

@ -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"

View file

@ -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 ]]>.

View file

@ -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)
}
}