From 0485ba72c3810b9ab52209318c5dfa490c97f7e2 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 28 Apr 2010 19:29:20 -0700 Subject: [PATCH] xml: allow text segments to end at EOF Fixes #674. R=adg CC=golang-dev https://golang.org/cl/1018042 --- src/pkg/xml/read_test.go | 2 +- src/pkg/xml/xml.go | 10 ++++++++-- src/pkg/xml/xml_test.go | 26 ++++++++++++++++++++++---- 3 files changed, 31 insertions(+), 7 deletions(-) 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) + } +} -- 2.50.0