mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
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:
parent
de92199648
commit
0485ba72c3
3 changed files with 31 additions and 7 deletions
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -758,10 +758,16 @@ func (p *Parser) text(quote int, cdata bool) []byte {
|
|||
p.buf.Reset()
|
||||
Input:
|
||||
for {
|
||||
b, ok := p.mustgetc()
|
||||
b, ok := p.getc()
|
||||
if !ok {
|
||||
if cdata {
|
||||
if p.err == os.EOF {
|
||||
p.err = p.syntaxError("unexpected EOF in CDATA section")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
break Input
|
||||
}
|
||||
|
||||
// <![CDATA[ section ends with ]]>.
|
||||
// It is an error for ]]> to appear in ordinary text.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue