summaryrefslogtreecommitdiff
path: root/internal/event
diff options
context:
space:
mode:
Diffstat (limited to 'internal/event')
-rw-r--r--internal/event/pair.go10
-rw-r--r--internal/event/pair_test.go10
2 files changed, 18 insertions, 2 deletions
diff --git a/internal/event/pair.go b/internal/event/pair.go
index 131c6b3..3eb8a16 100644
--- a/internal/event/pair.go
+++ b/internal/event/pair.go
@@ -120,8 +120,14 @@ func (e *Pair) Dump() string {
}
func (e *Pair) Recycle() {
- e.EnterEv.Recycle()
- e.ExitEv.Recycle()
+ if e.EnterEv != nil {
+ e.EnterEv.Recycle()
+ }
+ if e.ExitEv != nil {
+ e.ExitEv.Recycle()
+ }
+ e.EnterEv = nil
+ e.ExitEv = nil
e.File = nil
e.Comm = ""
e.Duration = 0
diff --git a/internal/event/pair_test.go b/internal/event/pair_test.go
index 43e9945..eb033dc 100644
--- a/internal/event/pair_test.go
+++ b/internal/event/pair_test.go
@@ -55,3 +55,13 @@ func TestPairCalculateDurationsWithPreviousExit(t *testing.T) {
t.Fatalf("DurationToPrev = %d, want 500", pair.DurationToPrev)
}
}
+
+func TestPairRecycleHandlesMissingExitEvent(t *testing.T) {
+ pair := NewPair(&types.OpenEvent{
+ Time: 1000,
+ Pid: 1,
+ Tid: 2,
+ })
+
+ pair.Recycle()
+}