diff options
author | Rob Pike <r@golang.org> | 2011-06-03 07:53:50 +1000 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2011-06-03 07:53:50 +1000 |
commit | ce5c1cf0368a7b17254086ab00134e47137ee720 (patch) | |
tree | 99273e4430cdc58a3081d1928e94ea74e1b639a8 | |
parent | 4e9e92500249258e9baa77fbaf8075f0c07e56b2 (diff) | |
download | go-ce5c1cf0368a7b17254086ab00134e47137ee720.tar.gz go-ce5c1cf0368a7b17254086ab00134e47137ee720.zip |
fmt: fix bug in UnreadRune: must clear memory of previous
rune if input implements UnreadRune; otherwise the lookahead
will lie.
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4548082
-rw-r--r-- | src/pkg/fmt/scan.go | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/src/pkg/fmt/scan.go b/src/pkg/fmt/scan.go index 2aade027bb..dd8548ceb7 100644 --- a/src/pkg/fmt/scan.go +++ b/src/pkg/fmt/scan.go @@ -226,20 +226,12 @@ func (s *ss) mustReadRune() (rune int) { } func (s *ss) UnreadRune() os.Error { - // Don't use strings.Reader.UnreadRune for now - appears to cause a problem. - // TODO(r, gri): Fix this and remove code between --- lines! - // --- - if _, ok := s.rr.(*strings.Reader); ok { - s.peekRune = s.prevRune - s.count-- - return nil - } - // --- if u, ok := s.rr.(runeUnreader); ok { u.UnreadRune() } else { s.peekRune = s.prevRune } + s.prevRune = -1 s.count-- return nil } |