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;