ta{g,sk}list: fix memory leak on removal

Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
Julien Danjou 2009-05-08 14:36:39 +02:00
parent 95180799cc
commit 5039c24ed0
2 changed files with 12 additions and 0 deletions

View File

@ -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

View File

@ -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