]> Cypherpunks repositories - gostls13.git/commitdiff
bufio: simplify bufio.Reader.ReadBytes to avoid an extra loop over a slice
authorAlex Gaynor <alex@alloy.us>
Fri, 4 Oct 2019 20:33:00 +0000 (20:33 +0000)
committerIan Lance Taylor <iant@golang.org>
Fri, 4 Oct 2019 21:22:55 +0000 (21:22 +0000)
Change-Id: Icb1c3eb30147180ba5949a25c65b48307b14c1ca
GitHub-Last-Rev: 937ae8641321139b9165ce7d57abeac5a67dc24d
GitHub-Pull-Request: golang/go#34704
Reviewed-on: https://go-review.googlesource.com/c/go/+/199157
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/bufio/bufio.go

index 0f05d3b32211ea45417fd159d1817fcb82038d1b..c29f233f08a94d47a9c1e0003b0a8be66b7f95e9 100644 (file)
@@ -432,6 +432,7 @@ func (b *Reader) ReadBytes(delim byte) ([]byte, error) {
        var frag []byte
        var full [][]byte
        var err error
+       n := 0
        for {
                var e error
                frag, e = b.ReadSlice(delim)
@@ -447,18 +448,15 @@ func (b *Reader) ReadBytes(delim byte) ([]byte, error) {
                buf := make([]byte, len(frag))
                copy(buf, frag)
                full = append(full, buf)
+               n += len(buf)
        }
 
-       // Allocate new buffer to hold the full pieces and the fragment.
-       n := 0
-       for i := range full {
-               n += len(full[i])
-       }
        n += len(frag)
 
-       // Copy full pieces and fragment in.
+       // Allocate new buffer to hold the full pieces and the fragment.
        buf := make([]byte, n)
        n = 0
+       // Copy full pieces and fragment in.
        for i := range full {
                n += copy(buf[n:], full[i])
        }