aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2022-12-21 11:03:16 -0500
committerThan McIntosh <thanm@google.com>2022-12-21 20:18:10 +0000
commitfadd77c05b0f6633d753da61c74a7ed81959b252 (patch)
tree1d2167acfe8b876527b2736796fbaf1611457961
parentc9a10d48a8f0e8479f5b9d98c5bd81b64a90d23d (diff)
downloadgo-fadd77c05b0f6633d753da61c74a7ed81959b252.tar.gz
go-fadd77c05b0f6633d753da61c74a7ed81959b252.zip
runtime/coverage: add missing file close in test support helper
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>
-rw-r--r--src/runtime/coverage/testsupport.go15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/runtime/coverage/testsupport.go b/src/runtime/coverage/testsupport.go
index 462d06c878..1d90ebd7a2 100644
--- a/src/runtime/coverage/testsupport.go
+++ b/src/runtime/coverage/testsupport.go
@@ -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.