summary refs log tree commit diff stats
path: root/lib/pure/ioselects
diff options
context:
space:
mode:
authorLeorize <alaviss@users.noreply.github.com>2018-09-22 11:24:29 +0700
committerLeorize <alaviss@users.noreply.github.com>2018-09-22 14:01:05 +0700
commit08c64842982b4c9331b3e027f08e8e3785865465 (patch)
tree5a463fda2eeb7e842ca93c67ff99f3f3ee99d7ff /lib/pure/ioselects
parent0b3862df10124c09cd945fbc0fb7ae4246ac8837 (diff)
downloadNim-08c64842982b4c9331b3e027f08e8e3785865465.tar.gz
ioselectors_poll: don't pollRemove() if not needed
pollAdd() is called only if events set isn't empty.
Diffstat (limited to 'lib/pure/ioselects')
-rw-r--r--lib/pure/ioselects/ioselectors_poll.nim5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/pure/ioselects/ioselectors_poll.nim b/lib/pure/ioselects/ioselectors_poll.nim
index 9d708b0c1..103a2242c 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)