From 08c64842982b4c9331b3e027f08e8e3785865465 Mon Sep 17 00:00:00 2001 From: Leorize Date: Sat, 22 Sep 2018 11:24:29 +0700 Subject: [PATCH] ioselectors_poll: don't pollRemove() if not needed pollAdd() is called only if events set isn't empty. --- lib/pure/ioselects/ioselectors_poll.nim | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pure/ioselects/ioselectors_poll.nim b/lib/pure/ioselects/ioselectors_poll.nim index 9d708b0c1d..103a2242cf 100644 --- a/lib/pure/ioselects/ioselectors_poll.nim +++ b/lib/pure/ioselects/ioselectors_poll.nim @@ -172,8 +172,9 @@ proc unregister*[T](s: Selector[T], fd: int|SocketHandle) = doAssert(pkey.ident != InvalidIdent, "Descriptor [" & $fdi & "] is not registered in the queue!") pkey.ident = InvalidIdent - pkey.events = {} - s.pollRemove(fdi.cint) + if pkey.events != {}: + pkey.events = {} + s.pollRemove(fdi.cint) proc unregister*[T](s: Selector[T], ev: SelectEvent) = let fdi = int(ev.rfd)