]> Cypherpunks repositories - gostls13.git/commitdiff
scan: for style, adjust code for bad scan read counts
authorRob Pike <r@golang.org>
Wed, 25 Mar 2020 22:32:27 +0000 (09:32 +1100)
committerRob Pike <r@golang.org>
Wed, 25 Mar 2020 22:44:57 +0000 (22:44 +0000)
Make the code more consistent with the rest of the file.
Should have caught this in review of CL 225357.

Change-Id: I12824cb436539c31604684e043ebb7587cc92471
Reviewed-on: https://go-review.googlesource.com/c/go/+/225557
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

src/bufio/scan.go

index 976b5994eb05a66cd832c846528196088b4aed5d..af46a14fbbe0ff9f34680b7e0f6467afa3e207ef 100644 (file)
@@ -69,6 +69,7 @@ var (
        ErrTooLong         = errors.New("bufio.Scanner: token too long")
        ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count")
        ErrAdvanceTooFar   = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input")
+       ErrBadReadCount    = errors.New("bufio.Scanner: Read returned impossible count")
 )
 
 const (
@@ -211,9 +212,9 @@ func (s *Scanner) Scan() bool {
                // be extra careful: Scanner is for safe, simple jobs.
                for loop := 0; ; {
                        n, err := s.r.Read(s.buf[s.end:len(s.buf)])
-                       if n < 0 || n > len(s.buf)-s.end {
-                               n = 0
-                               err = errors.New("bufio.Scanner: Read returned impossible count")
+                       if n < 0 || len(s.buf)-s.end < n {
+                               s.setErr(ErrBadReadCount)
+                               break
                        }
                        s.end += n
                        if err != nil {