[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Is this possible? (garbage collect and weak tables)
- From: Ignacio Burgueño <ignaciob@...>
- Date: Fri, 06 Nov 2009 10:32:14 -0200
Alex Davies wrote:
Right, easily possible - particularly if i18nlib.Translator makes a lot
of allocations. Easy enough to fix though, just save translators[key]
to a local variable and restore it after the i18nlib call.
- Alex
Sadly, i18nlib.Translator allocates just a userdata wrapping a pointer
(so 4 bytes for me).
Would this be safe?
local user = inconcert.authUser or {languageId=14346, codepage="UTF-8"}
local temp = translators[key] or {} -- get a strong reference to the
-- elements in the weak table translators[key] = temp
local translator = temp[user.languageId]
if not translator then
translator = i18nlib.Translator{(arguments omitted)}
temp[user.languageId] = translator
end
return translator