memory leak bugfix in multicast, See issue #519

This commit is contained in:
Cloud Wu
2016-06-17 12:17:53 +08:00
parent 6a54fe8293
commit 040089639f
2 changed files with 6 additions and 17 deletions

View File

@@ -78,13 +78,13 @@ local function publish(c , source, pack, size)
local group = channel[c]
if group == nil or next(group) == nil then
-- dead channel, delete the pack. mc.bind returns the pointer in pack
-- dead channel, delete the pack. mc.bind returns the pointer in pack and free the pack (struct mc_package **)
local pack = mc.bind(pack, 1)
mc.close(pack)
return
end
mc.bind(pack, channel_n[c])
local msg = skynet.tostring(pack, size)
local msg = skynet.tostring(pack, size) -- copy (pack,size) to a string
mc.bind(pack, channel_n[c]) -- mc.bind will free the pack(struct mc_package **)
for k in pairs(group) do
-- the msg is a pointer to the real message, publish pointer in local is ok.
skynet.redirect(k, source, "multicast", c , msg)