diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-18 13:13:25 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-18 13:13:25 +0300 |
| commit | 550f064f95113e072677b871b7de30ecf25d62b8 (patch) | |
| tree | 03e39a1bed71b4fc16ea62e7956a6268982f15a3 /internal/eventloop_exit.go | |
| parent | 808c2549bfb17d22388a197d361a07ce0fc8f54f (diff) | |
fix task 45: bound pending handle cleanup
Diffstat (limited to 'internal/eventloop_exit.go')
| -rw-r--r-- | internal/eventloop_exit.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/internal/eventloop_exit.go b/internal/eventloop_exit.go index c74ecea..e97688a 100644 --- a/internal/eventloop_exit.go +++ b/internal/eventloop_exit.go @@ -70,7 +70,7 @@ func (e *eventLoop) handlePathExit(ep *event.Pair, pathEv *types.PathEvent) bool ep.Recycle() return false } - e.pendingHandles[pathEv.GetTid()] = types.StringValue(pathEv.Pathname[:]) + e.pendingHandleState().set(pathEv.GetTid(), types.StringValue(pathEv.Pathname[:])) ep.Recycle() return false } @@ -175,18 +175,19 @@ func (e *eventLoop) handleOpenByHandleAtExit(ep *event.Pair, openByHandleEv *typ tid := openByHandleEv.GetTid() retEvent, ok := ep.ExitEv.(*types.RetEvent) if !ok { + e.pendingHandleState().delete(tid) e.recyclePair(ep, "Dropped malformed open_by_handle_at exit event") return false } fd := int32(retEvent.Ret) if fd < 0 { + e.pendingHandleState().delete(tid) ep.Recycle() return false } - if pathname, ok := e.pendingHandles[tid]; ok { - delete(e.pendingHandles, tid) + if pathname, ok := e.pendingHandleState().consume(tid); ok { fdFile := file.NewFd(fd, pathname, openByHandleEv.Flags) e.fdState().set(fd, fdFile) ep.File = fdFile |
