lua-users home
lua-l archive

Re: Metamethods as weak reference?

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


> It seems all of the metamethods retain a strong reference, which is causing
> me problems trying to use proxy objects. Is there a specific reason they're
> a strong reference? It seems to be this line that makes them all strong:
> 
> ltm.c: 39
> for (i=0; i<TM_N; i++) {
> G(L)->tmname[i] = luaS_new(L, luaT_eventname[i]);
> luaS_fix(G(L)->tmname[i]); /* never collect these names */
> 
> What would be the implications of removing this luaS_fix on the metamethods?
This 'fix' only prevents the collection of the strings '__add', '__index',
etc. (Anyway, strings are never removed by themselves from weak tables.)
If your metatable has weak values, then its entries will be cleared
when the values are no longer accessible.
-- Roberto

AltStyle によって変換されたページ (->オリジナル) /