diff options
Diffstat (limited to 'src/pkg/xml/xml.go')
-rw-r--r-- | src/pkg/xml/xml.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/pkg/xml/xml.go b/src/pkg/xml/xml.go index 3737fbec9..410b0f77c 100644 --- a/src/pkg/xml/xml.go +++ b/src/pkg/xml/xml.go @@ -165,6 +165,7 @@ type Parser struct { r io.ReadByter buf bytes.Buffer + saved *bytes.Buffer stk *stack free *stack needClose bool @@ -698,6 +699,9 @@ func (p *Parser) getc() (b byte, ok bool) { if p.err != nil { return 0, false } + if p.saved != nil { + p.saved.WriteByte(b) + } } if b == '\n' { p.line++ @@ -705,6 +709,16 @@ func (p *Parser) getc() (b byte, ok bool) { return b, true } +// Return saved offset. +// If we did ungetc (nextByte >= 0), have to back up one. +func (p *Parser) savedOffset() int { + n := p.saved.Len() + if p.nextByte >= 0 { + n-- + } + return n +} + // Must read a single byte. // If there is no byte to read, // set p.err to SyntaxError("unexpected EOF") |