diff options
Diffstat (limited to 'internal/event')
| -rw-r--r-- | internal/event/event.go | 2 | ||||
| -rw-r--r-- | internal/event/pair.go | 23 |
2 files changed, 6 insertions, 19 deletions
diff --git a/internal/event/event.go b/internal/event/event.go index 48bde48..c846e04 100644 --- a/internal/event/event.go +++ b/internal/event/event.go @@ -7,7 +7,7 @@ import ( ) var poolOfEventPairs = sync.Pool{ - New: func() interface{} { return &Pair{} }, + New: func() any { return &Pair{} }, } // Event is the common contract implemented by decoded syscall trace events. diff --git a/internal/event/pair.go b/internal/event/pair.go index 3eb8a16..4d3f342 100644 --- a/internal/event/pair.go +++ b/internal/event/pair.go @@ -25,20 +25,13 @@ type Pair struct { Comm string Duration uint64 DurationToPrev uint64 - Bytes uint64 // Number of bytes transferred (read/write/transfer syscalls only) - Equals bool + Bytes uint64 // Number of bytes transferred (read/write/transfer syscalls only) } func NewPair(enterEv Event) *Pair { e := poolOfEventPairs.Get().(*Pair) - e.EnterEv = enterEv - e.ExitEv = nil - e.File = nil - e.Comm = "" - e.Duration = 0 - e.DurationToPrev = 0 - e.Bytes = 0 - e.Equals = false + // Zero all fields via struct literal to prevent stale data from previous pool reuse. + *e = Pair{EnterEv: enterEv} return e } @@ -126,13 +119,7 @@ func (e *Pair) Recycle() { if e.ExitEv != nil { e.ExitEv.Recycle() } - e.EnterEv = nil - e.ExitEv = nil - e.File = nil - e.Comm = "" - e.Duration = 0 - e.DurationToPrev = 0 - e.Bytes = 0 - e.Equals = false + // Zero all fields via struct literal to prevent stale data on pool reuse. + *e = Pair{} poolOfEventPairs.Put(e) } |
