aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2023-05-05 11:11:10 -0400
committerThan McIntosh <thanm@google.com>2023-05-05 16:49:44 +0000
commit695a53620fda42487f02a40af7fc3bc8da45425a (patch)
treeb69bdd337a436cd8d086f0d93fd8b340ad8ded53 /src
parent13a59e36c0a224db15cf2e9b59797c1e0103cae7 (diff)
downloadgo-695a53620fda42487f02a40af7fc3bc8da45425a.tar.xz
internal/coverage/encodecounter: followup changes from code review
This patch contains a small set of changes with fixes for some issues that surfaced during the code review for CL 484535. Due to an error on my part, these never got included in the final version that was checked in (I rebased, mailed the rebase, but then never mailed the final patch set with the changes). This patch sends the remaining bits and pieces. Updates #59563. Change-Id: I87dc05a83f8e44c8bfe7203bc2b035defc817af9 Reviewed-on: https://go-review.googlesource.com/c/go/+/492981 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/internal/coverage/encodecounter/encode.go18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/internal/coverage/encodecounter/encode.go b/src/internal/coverage/encodecounter/encode.go
index 1ff6cb1f9a..59586730de 100644
--- a/src/internal/coverage/encodecounter/encode.go
+++ b/src/internal/coverage/encodecounter/encode.go
@@ -28,7 +28,6 @@ type CoverageDataWriter struct {
w *bufio.Writer
csh coverage.CounterSegmentHeader
tmp []byte
- nfuncs uint64
cflavor coverage.CounterFlavor
segs uint32
debug bool
@@ -86,17 +85,25 @@ func padToFourByteBoundary(ws *slicewriter.WriteSeeker) error {
}
func (cfw *CoverageDataWriter) patchSegmentHeader(ws *slicewriter.WriteSeeker) error {
+ // record position
+ off, err := ws.Seek(0, io.SeekCurrent)
+ if err != nil {
+ return fmt.Errorf("error seeking in patchSegmentHeader: %v", err)
+ }
+ // seek back to start so that we can update the segment header
if _, err := ws.Seek(0, io.SeekStart); err != nil {
return fmt.Errorf("error seeking in patchSegmentHeader: %v", err)
}
- cfw.csh.FcnEntries = cfw.nfuncs
- cfw.nfuncs = 0
if cfw.debug {
fmt.Fprintf(os.Stderr, "=-= writing counter segment header: %+v", cfw.csh)
}
if err := binary.Write(ws, binary.LittleEndian, cfw.csh); err != nil {
return err
}
+ // ... and finally return to the original offset.
+ if _, err := ws.Seek(off, io.SeekStart); err != nil {
+ return fmt.Errorf("error seeking in patchSegmentHeader: %v", err)
+ }
return nil
}
@@ -167,8 +174,7 @@ func (cfw *CoverageDataWriter) AppendSegment(args map[string]string, visitor Cou
cfw.stab.Lookup(v)
}
- var swws slicewriter.WriteSeeker
- ws := &swws
+ ws := &slicewriter.WriteSeeker{}
if err = cfw.writeSegmentPreamble(args, ws); err != nil {
return err
}
@@ -253,7 +259,7 @@ func (cfw *CoverageDataWriter) writeCounters(visitor CounterVisitor, ws *slicewr
// Write out entries for each live function.
emitter := func(pkid uint32, funcid uint32, counters []uint32) error {
- cfw.nfuncs++
+ cfw.csh.FcnEntries++
if err := wrval(uint32(len(counters))); err != nil {
return err
}