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