ta{g,sk}list: fix memory leak on removal
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
95180799cc
commit
5039c24ed0
|
@ -67,6 +67,11 @@ function new(screen, label, buttons)
|
|||
end
|
||||
end)
|
||||
u(screen)
|
||||
-- Free data on tag removal.
|
||||
-- See tasklist to get why this is needed.
|
||||
hooks.tags.register(function (s, tag, action)
|
||||
if action == "remove" then data[tag] = nil end
|
||||
end)
|
||||
return w
|
||||
end
|
||||
|
||||
|
|
|
@ -70,6 +70,13 @@ function new(label, buttons)
|
|||
end
|
||||
end)
|
||||
u()
|
||||
-- Free data on unmanage.
|
||||
-- You may thing we do not need to clear data[] on unmanage because it's a
|
||||
-- weak-keyed table. But in fact we need, because it's a loop reference
|
||||
-- between data[client] and data[client][i] = button(reference a client in
|
||||
-- the Lua registry) and since the registry and the button() are totally
|
||||
-- unconnected, Lua does not free anything.
|
||||
hooks.unmanage.register(function (c) data[c] = nil end)
|
||||
return w
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue