]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/coverage: add missing file close in test support helper
authorThan McIntosh <thanm@google.com>
Wed, 21 Dec 2022 16:03:16 +0000 (11:03 -0500)
committerThan McIntosh <thanm@google.com>
Wed, 21 Dec 2022 20:18:10 +0000 (20:18 +0000)
The processPod() helper (invoked by processCoverTestDir, which is in
turn called by _testmain.go) was opening and reading counter data
files, but never closing them. Add a call to close the files after
they have been read.

Fixes #57407.

Change-Id: If9a489f92e4bab72c5b2df8697e14420a6f7b8f5
Reviewed-on: https://go-review.googlesource.com/c/go/+/458835
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Than McIntosh <thanm@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/runtime/coverage/testsupport.go

index 462d06c878fe1a85590e2d6be51db2b101785686..1d90ebd7a299bf6bbeef863c272f38d2fa499ef3 100644 (file)
@@ -136,13 +136,16 @@ func (ts *tstate) processPod(p pods.Pod) error {
                return err
        }
 
-       // Read counter data files.
+       // A map to store counter data, indexed by pkgid/fnid tuple.
        pmm := make(map[pkfunc][]uint32)
-       for _, cdf := range p.CounterDataFiles {
+
+       // Helper to read a single counter data file.
+       readcdf := func(cdf string) error {
                cf, err := os.Open(cdf)
                if err != nil {
                        return fmt.Errorf("opening counter data file %s: %s", cdf, err)
                }
+               defer cf.Close()
                var cdr *decodecounter.CounterDataReader
                cdr, err = decodecounter.NewCounterDataReader(cdf, cf)
                if err != nil {
@@ -170,6 +173,14 @@ func (ts *tstate) processPod(p pods.Pod) error {
                        copy(c, data.Counters)
                        pmm[key] = c
                }
+               return nil
+       }
+
+       // Read counter data files.
+       for _, cdf := range p.CounterDataFiles {
+               if err := readcdf(cdf); err != nil {
+                       return err
+               }
        }
 
        // Visit meta-data file.