From 2c404c68a227a5719049aa701e97f5a47b3d66e1 Mon Sep 17 00:00:00 2001 From: edmccard Date: Mon, 30 Apr 2012 22:30:23 -0400 Subject: [PATCH] Garbage collect deactivated timers when they are added faster than they can be triggered. --- src/timer.d | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/timer.d b/src/timer.d index 785abc0..b084a77 100644 --- a/src/timer.d +++ b/src/timer.d @@ -147,6 +147,19 @@ public: final size_t addCounter(uint length, bool delegate() expiry) { + if (nextFree == counters.length) + { + size_t idx = head; + size_t prev = -1; + while (idx != -1) + { + if (!counters[idx].active) + deleteCounter(idx, prev); + else + prev = idx; + idx = counters[idx].next; + } + } if (nextFree == counters.length) { counters.length += 20;