From: Russ Cox Date: Thu, 29 Apr 2010 02:29:20 +0000 (-0700) Subject: xml: allow text segments to end at EOF X-Git-Tag: weekly.2010-05-04~51 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0485ba72c3810b9ab52209318c5dfa490c97f7e2;p=gostls13.git xml: allow text segments to end at EOF Fixes #674. R=adg CC=golang-dev https://golang.org/cl/1018042 --- diff --git a/src/pkg/xml/read_test.go b/src/pkg/xml/read_test.go index 97fa423d6a..a080c016fb 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 1ad1039f64..44c42c0359 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 dab35df731..148bd2cd0c 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) + } +}