diff options
| author | Alan Donovan <adonovan@google.com> | 2024-12-11 15:42:06 -0500 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2025-05-19 09:13:04 -0700 |
| commit | 198c3cb785282ee4c199680ec2d05381805a6f66 (patch) | |
| tree | 32212e5599bc44e5bba3c178a7ce5be263acf70b /src/internal/pkgbits/encoder.go | |
| parent | da9c5b142c855496222f0ab167c3f1d9e98403c4 (diff) | |
| download | go-198c3cb785282ee4c199680ec2d05381805a6f66.tar.xz | |
std: pass bytes.Buffer and strings.Builder by pointer
This CL fixes a number of (all true positive) findings of vet's
copylock analyzer patched to treat the Bu{ff,uild}er types
as non-copyable after first use.
This does require imposing an additional indirection
between noder.writer and Encoder since the field is
embedded by value but its constructor now returns a pointer.
Updates golang/go#25907
Updates golang/go#47276
Change-Id: I0b4d77ac12bcecadf06a91709e695365da10766c
Reviewed-on: https://go-review.googlesource.com/c/go/+/635339
Reviewed-by: Robert Findley <rfindley@google.com>
Commit-Queue: Alan Donovan <adonovan@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
Diffstat (limited to 'src/internal/pkgbits/encoder.go')
| -rw-r--r-- | src/internal/pkgbits/encoder.go | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/internal/pkgbits/encoder.go b/src/internal/pkgbits/encoder.go index 1b38469097..5c51642e3c 100644 --- a/src/internal/pkgbits/encoder.go +++ b/src/internal/pkgbits/encoder.go @@ -121,7 +121,7 @@ func (pw *PkgEncoder) StringIdx(s string) RelIndex { // NewEncoder returns an Encoder for a new element within the given // section, and encodes the given SyncMarker as the start of the // element bitstream. -func (pw *PkgEncoder) NewEncoder(k SectionKind, marker SyncMarker) Encoder { +func (pw *PkgEncoder) NewEncoder(k SectionKind, marker SyncMarker) *Encoder { e := pw.NewEncoderRaw(k) e.Sync(marker) return e @@ -131,11 +131,11 @@ func (pw *PkgEncoder) NewEncoder(k SectionKind, marker SyncMarker) Encoder { // section. // // Most callers should use NewEncoder instead. -func (pw *PkgEncoder) NewEncoderRaw(k SectionKind) Encoder { +func (pw *PkgEncoder) NewEncoderRaw(k SectionKind) *Encoder { idx := RelIndex(len(pw.elems[k])) pw.elems[k] = append(pw.elems[k], "") // placeholder - return Encoder{ + return &Encoder{ p: pw, k: k, Idx: idx, |
