]> Cypherpunks repositories - gostls13.git/commitdiff
fmt: fix bug in UnreadRune: must clear memory of previous
authorRob Pike <r@golang.org>
Thu, 2 Jun 2011 21:53:50 +0000 (07:53 +1000)
committerRob Pike <r@golang.org>
Thu, 2 Jun 2011 21:53:50 +0000 (07:53 +1000)
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

index 2aade027bbe7b89afae619bea26cfb158f317e24..dd8548ceb7aae4114d19d6afbeda1952df489a6c 100644 (file)
@@ -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
 }