Skip to content

Commit 22cf8ae

Browse files
committed
Try to fix Lua garbage collection for LuaServer
1 parent ea79db0 commit 22cf8ae

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/lua/fileffi.lua

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ LuaServer* uvFifoListener();
5454

5555
void stopListener(LuaServer* server);
5656
void startListener(LuaServer* server, unsigned port, void (*cb)(LuaFile* fifo));
57+
void deleteListener(LuaServer* server);
5758

5859
void closeFile(LuaFile* wrapper);
5960

@@ -366,12 +367,12 @@ local function createUvListener(port, cb)
366367
_proxy = newproxy(),
367368
_cb = _callback,
368369
_port = port,
369-
startListener = function(listener) C.startListener(listener._wrapper, listener._port, listener._cb) end,
370-
stopListener = function(listener) C.stopListener(listener._wrapper) end,
370+
start = function(listener) C.startListener(listener._wrapper, listener._port, listener._cb) end,
371+
stop = function(listener) C.stopListener(listener._wrapper) end,
371372
}
372373
-- Use a proxy instead of doing this on the wrapper directly using ffi.gc, because of a bug in LuaJIT,
373374
-- where circular references on finalizers using ffi.gc won't actually collect anything.
374-
debug.setmetatable(listener._proxy, { __gc = function() C.stopListener(listener._wrapper) end })
375+
debug.setmetatable(listener._proxy, { __gc = function() C.deleteListener(listener._wrapper) listener._cb = nil end })
375376
return listener
376377
end
377378

0 commit comments

Comments
 (0)