From ce5c1cf0368a7b17254086ab00134e47137ee720 Mon Sep 17 00:00:00 2001 From: Rob Pike Date: Fri, 3 Jun 2011 07:53:50 +1000 Subject: [PATCH] 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 --- src/pkg/fmt/scan.go | 10 +--------- 1 file changed, 1 insertion(+), 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 } -- 2.48.1