1
0
mirror of https://github.com/golang/go synced 2024-11-14 08:10:22 -07:00

encoding/xml: fix spurious "no semicolon" in error

Noticed while doing other XML investigations.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/7550045
This commit is contained in:
Russ Cox 2013-03-12 00:29:36 -04:00
parent aa81eb5901
commit 019754ed40
2 changed files with 5 additions and 10 deletions

View File

@ -956,7 +956,7 @@ Input:
b0, b1 = 0, 0 b0, b1 = 0, 0
continue Input continue Input
} }
ent := string(d.buf.Bytes()[before]) ent := string(d.buf.Bytes()[before:])
if ent[len(ent)-1] != ';' { if ent[len(ent)-1] != ';' {
ent += " (no semicolon)" ent += " (no semicolon)"
} }

View File

@ -595,13 +595,6 @@ func TestEntityInsideCDATA(t *testing.T) {
} }
} }
// The last three tests (respectively one for characters in attribute
// names and two for character entities) pass not because of code
// changed for issue 1259, but instead pass with the given messages
// from other parts of xml.Decoder. I provide these to note the
// current behavior of situations where one might think that character
// range checking would detect the error, but it does not in fact.
var characterTests = []struct { var characterTests = []struct {
in string in string
err string err string
@ -611,8 +604,10 @@ var characterTests = []struct {
{"\xef\xbf\xbe<doc/>", "illegal character code U+FFFE"}, {"\xef\xbf\xbe<doc/>", "illegal character code U+FFFE"},
{"<?xml version=\"1.0\"?><doc>\r\n<hiya/>\x07<toots/></doc>", "illegal character code U+0007"}, {"<?xml version=\"1.0\"?><doc>\r\n<hiya/>\x07<toots/></doc>", "illegal character code U+0007"},
{"<?xml version=\"1.0\"?><doc \x12='value'>what's up</doc>", "expected attribute name in element"}, {"<?xml version=\"1.0\"?><doc \x12='value'>what's up</doc>", "expected attribute name in element"},
{"<doc>&abc\x01;</doc>", "invalid character entity &abc (no semicolon)"},
{"<doc>&\x01;</doc>", "invalid character entity & (no semicolon)"}, {"<doc>&\x01;</doc>", "invalid character entity & (no semicolon)"},
{"<doc>&\xef\xbf\xbe;</doc>", "invalid character entity & (no semicolon)"}, {"<doc>&\xef\xbf\xbe;</doc>", "invalid character entity &\uFFFE;"},
{"<doc>&hello;</doc>", "invalid character entity &hello;"},
} }
func TestDisallowedCharacters(t *testing.T) { func TestDisallowedCharacters(t *testing.T) {
@ -629,7 +624,7 @@ func TestDisallowedCharacters(t *testing.T) {
t.Fatalf("input %d d.Token() = _, %v, want _, *SyntaxError", i, err) t.Fatalf("input %d d.Token() = _, %v, want _, *SyntaxError", i, err)
} }
if synerr.Msg != tt.err { if synerr.Msg != tt.err {
t.Fatalf("input %d synerr.Msg wrong: want '%s', got '%s'", i, tt.err, synerr.Msg) t.Fatalf("input %d synerr.Msg wrong: want %q, got %q", i, tt.err, synerr.Msg)
} }
} }
} }