summaryrefslogtreecommitdiff
path: root/internal/event
diff options
context:
space:
mode:
Diffstat (limited to 'internal/event')
-rw-r--r--internal/event/event.go2
-rw-r--r--internal/event/pair.go23
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)
}