From 081647ea1ffaf7bf932e727c9311e765b642da5b Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 16 Dec 2021 12:16:45 +0100 Subject: util.smqueue: Simplify compat table, fix dependent modules (thanks Martin) There was an off-by-one in the modulo calculation. Switching to a plain old array-table makes the apparent size of the queue wrong, but since some of the queue may not be available this is likely for the best. --- util/smqueue.lua | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'util/smqueue.lua') diff --git a/util/smqueue.lua b/util/smqueue.lua index d24c35ae..6d8348d4 100644 --- a/util/smqueue.lua +++ b/util/smqueue.lua @@ -38,17 +38,12 @@ function smqueue:resume() return self._queue:items() end function smqueue:consume() return self._queue:consume() end -local compat_mt = {} - -function compat_mt:__index(i) - if i < self._queue._tail then return nil end - return self._queue._queue._items[(i + self._queue._tail) % self._queue._queue.size] +function smqueue:table() + local t = {}; + for i, v in self:resume() do t[i] = v; end + return t end -function compat_mt:__len() return self._queue:count_unacked() end - -function smqueue:table() return setmetatable({ _queue = self }, compat_mt) end - local function freeze(q) return { head = q._head; tail = q._tail } end local queue_mt = { __name = "smqueue"; __index = smqueue; __len = smqueue.count_unacked; __freeze = freeze } -- cgit v1.2.3