]> Cypherpunks repositories - gostls13.git/commitdiff
os: ReadFile: don't check for re-allocation in the first iteration
authorJabar Asadi <jasadi@d2iq.com>
Sun, 28 May 2023 06:45:23 +0000 (06:45 +0000)
committerGopher Robot <gobot@golang.org>
Tue, 25 Jul 2023 00:48:06 +0000 (00:48 +0000)
At the beginning of the for-loop iteration cap(data) > len(data) always.
Therefore, in the first iteration, this check becomes unnecessary.
we can move this check to after the read operation.

Change-Id: I205e4a842ced74f31124b45a39b70523b56ad840
GitHub-Last-Rev: 2fdf25dff2e9984d3a8f8e5e612ea802c88e88a1
GitHub-Pull-Request: golang/go#60473
Reviewed-on: https://go-review.googlesource.com/c/go/+/498915
Reviewed-by: Rob Pike <r@golang.org>
Reviewed-by: Bryan Mills <bcmills@google.com>
Run-TryBot: Rob Pike <r@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>

src/os/file.go

index 806c1f204591db362ea2f0f2bcf055ad74f4e89a..2f12c3bdae5362caa26d7ded1bdcf451bfafd120 100644 (file)
@@ -725,10 +725,6 @@ func ReadFile(name string) ([]byte, error) {
 
        data := make([]byte, 0, size)
        for {
-               if len(data) >= cap(data) {
-                       d := append(data[:cap(data)], 0)
-                       data = d[:len(data)]
-               }
                n, err := f.Read(data[len(data):cap(data)])
                data = data[:len(data)+n]
                if err != nil {
@@ -737,6 +733,11 @@ func ReadFile(name string) ([]byte, error) {
                        }
                        return data, err
                }
+
+               if len(data) >= cap(data) {
+                       d := append(data[:cap(data)], 0)
+                       data = d[:len(data)]
+               }
        }
 }