diff --git a/src/pkg/xml/read_test.go b/src/pkg/xml/read_test.go index 97fa423d6ac..a080c016fba 100644 --- a/src/pkg/xml/read_test.go +++ b/src/pkg/xml/read_test.go @@ -75,7 +75,7 @@ call sites. I also wanted to verify that ExpandTabs was not being used from outside intra_region_diff.py. -` + ` type Feed struct { XMLName Name "http://www.w3.org/2005/Atom feed" diff --git a/src/pkg/xml/xml.go b/src/pkg/xml/xml.go index 1ad1039f644..44c42c03595 100644 --- a/src/pkg/xml/xml.go +++ b/src/pkg/xml/xml.go @@ -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 } // . diff --git a/src/pkg/xml/xml_test.go b/src/pkg/xml/xml_test.go index dab35df7319..148bd2cd0c5 100644 --- a/src/pkg/xml/xml_test.go +++ b/src/pkg/xml/xml_test.go @@ -102,7 +102,6 @@ var xmlInput = []string{ "c", "", "<>", "", @@ -140,7 +137,6 @@ var xmlInput = []string{ "", "", // "", // let the Token() caller handle - "cdata", "", "", " ` + 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 := ` ` + 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) + } +}