summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2015-10-15 10:24:02 +0200
committerDaniel Silverstone <dsilvers@digital-scurf.org>2015-10-15 10:24:02 +0200
commite2f833928d3784726a04cbaf1e2ea754f5635fe9 (patch)
treefc911da0dc03c5497a4ea60fe563803e311ffad9
parent89c873c6c73db7af68f57a6165dc945f9d7b4417 (diff)
downloadsupple-e2f833928d3784726a04cbaf1e2ea754f5635fe9.tar.gz
Force some garbage collection so that we don't get confused ordering in replies
-rw-r--r--lib/supple/comms.lua6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/supple/comms.lua b/lib/supple/comms.lua
index ae2779c..2b22ded 100644
--- a/lib/supple/comms.lua
+++ b/lib/supple/comms.lua
@@ -155,11 +155,15 @@ local function wait_for_response()
else
resp = request.response(unpack(res))
end
+ -- Force anything no longer anchored to be GC'd before we reply
+ gc "collect"
send_msg(resp)
end
if back.method == "__gc" then
-- __gc is the garbage collect mechanism
objects.forget_mine(back.object)
+ -- Force anything no longer anchored to be GC'd before we reply
+ gc "collect"
send_msg(request.response())
elseif back.method == "__call" then
-- __call is the function call mechanism
@@ -222,4 +226,4 @@ return {
_wait = wait_for_response,
_set_fd = set_fd,
set_limits = set_limits,
-} \ No newline at end of file
+}