From: Rob Pike Date: Thu, 2 Jun 2011 21:53:50 +0000 (+1000) Subject: fmt: fix bug in UnreadRune: must clear memory of previous X-Git-Tag: weekly.2011-06-02~2 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ce5c1cf0368a7b17254086ab00134e47137ee720;p=gostls13.git 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 --- 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 }