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 2aade02..dd8548c 100644
--- a/src/pkg/fmt/scan.go
+++ b/src/pkg/fmt/scan.go
@@ -226,20 +226,12 @@
 }
 
 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
 }