From d6321a2b52350e3a86f741831571b41fb5b7a056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Ludwig?= Date: Mon, 23 Jan 2017 11:34:14 +0100 Subject: [PATCH] Fix waiter count bookkeeping in PosixEventDriverEvents. --- source/eventcore/drivers/posix.d | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/eventcore/drivers/posix.d b/source/eventcore/drivers/posix.d index c1de388..cfdd09b 100644 --- a/source/eventcore/drivers/posix.d +++ b/source/eventcore/drivers/posix.d @@ -1231,11 +1231,14 @@ final class PosixEventDriverEvents(Loop : PosixEventLoop, Sockets : EventDriverS //log("emitting only for this thread (%s waiters)", m_fds[event].waiters.length); foreach (w; slot.waiters.consume) { //log("emitting waiter %s %s", cast(void*)w.funcptr, w.ptr); + m_loop.m_waiterCount--; w(event); } } else { - if (!slot.waiters.empty) + if (!slot.waiters.empty) { + m_loop.m_waiterCount--; slot.waiters.consumeOne()(event); + } } } @@ -1254,7 +1257,7 @@ final class PosixEventDriverEvents(Loop : PosixEventLoop, Sockets : EventDriverS final override void wait(EventID event, EventCallback on_event) { m_loop.m_waiterCount++; - return getSlot(event).waiters.put(on_event); + getSlot(event).waiters.put(on_event); } final override void cancelWait(EventID event, EventCallback on_event)