diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-11-26 12:32:31 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2010-11-26 12:32:31 -0200 |
| commit | 9b7a12c46d85666e0e60efd79b39495589e497e8 (patch) | |
| tree | c69acde3d3e300fa0db87004045e7599cbbca7a2 /lapi.c | |
| parent | 5b33e398557d7afad4a916bb483e9894e4b9b3d4 (diff) | |
| download | lua-9b7a12c46d85666e0e60efd79b39495589e497e8.tar.gz lua-9b7a12c46d85666e0e60efd79b39495589e497e8.tar.bz2 lua-9b7a12c46d85666e0e60efd79b39495589e497e8.zip | |
finalizers (__gc) for tables
Diffstat (limited to 'lapi.c')
| -rw-r--r-- | lapi.c | 5 |
1 files changed, 3 insertions, 2 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lapi.c,v 2.139 2010/10/25 20:31:11 roberto Exp roberto $ | 2 | ** $Id: lapi.c,v 2.141 2010/11/18 19:15:00 roberto Exp roberto $ |
| 3 | ** Lua API | 3 | ** Lua API |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -760,13 +760,14 @@ LUA_API int lua_setmetatable (lua_State *L, int objindex) { | |||
| 760 | hvalue(obj)->metatable = mt; | 760 | hvalue(obj)->metatable = mt; |
| 761 | if (mt) | 761 | if (mt) |
| 762 | luaC_objbarrierback(L, gcvalue(obj), mt); | 762 | luaC_objbarrierback(L, gcvalue(obj), mt); |
| 763 | luaC_checkfinalizer(L, gcvalue(obj), mt); | ||
| 763 | break; | 764 | break; |
| 764 | } | 765 | } |
| 765 | case LUA_TUSERDATA: { | 766 | case LUA_TUSERDATA: { |
| 766 | uvalue(obj)->metatable = mt; | 767 | uvalue(obj)->metatable = mt; |
| 767 | if (mt) { | 768 | if (mt) { |
| 768 | luaC_objbarrier(L, rawuvalue(obj), mt); | 769 | luaC_objbarrier(L, rawuvalue(obj), mt); |
| 769 | luaC_checkfinalizer(L, rawuvalue(obj)); | 770 | luaC_checkfinalizer(L, gcvalue(obj), mt); |
| 770 | } | 771 | } |
| 771 | break; | 772 | break; |
| 772 | } | 773 | } |
