]> Cypherpunks repositories - gostls13.git/commitdiff
io: ReadAll: do not check for realloc in first round
authorOlivier Mengué <olivier.mengue@gmail.com>
Tue, 18 Apr 2023 20:13:27 +0000 (22:13 +0200)
committerGopher Robot <gobot@golang.org>
Thu, 20 Apr 2023 16:22:09 +0000 (16:22 +0000)
Refactor io.ReadAll to check for realloc of the buffer only after the
first read.

Fixes: #59702
Change-Id: I93b99139e6756f21738d47e7d9ad08e1d167258e
Reviewed-on: https://go-review.googlesource.com/c/go/+/486236
Auto-Submit: Emmanuel Odeke <emmanuel@orijtech.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Emmanuel Odeke <emmanuel@orijtech.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Emmanuel Odeke <emmanuel@orijtech.com>
src/io/io.go

index 630ab73b56f4f18b091d9284b3b06377a3d36ecd..7b8ee10a5619fc370a7b16037bd2b11a05d32604 100644 (file)
@@ -694,10 +694,6 @@ func (c nopCloserWriterTo) WriteTo(w Writer) (n int64, err error) {
 func ReadAll(r Reader) ([]byte, error) {
        b := make([]byte, 0, 512)
        for {
-               if len(b) == cap(b) {
-                       // Add more capacity (let append pick how much).
-                       b = append(b, 0)[:len(b)]
-               }
                n, err := r.Read(b[len(b):cap(b)])
                b = b[:len(b)+n]
                if err != nil {
@@ -706,5 +702,10 @@ func ReadAll(r Reader) ([]byte, error) {
                        }
                        return b, err
                }
+
+               if len(b) == cap(b) {
+                       // Add more capacity (let append pick how much).
+                       b = append(b, 0)[:len(b)]
+               }
        }
 }