| 6378 | |
| 6379 | |
| 6380 | static void freeobj (lua_State *L, GCObject *o) { |
| 6381 | switch (o->gch.tt) { |
| 6382 | case LUA_TPROTO: luaF_freeproto(L, gco2p(o)); break; |
| 6383 | case LUA_TFUNCTION: luaF_freeclosure(L, gco2cl(o)); break; |
| 6384 | case LUA_TUPVAL: luaF_freeupval(L, gco2uv(o)); break; |
| 6385 | case LUA_TTABLE: luaH_free(L, gco2h(o)); break; |
| 6386 | case LUA_TTHREAD: { |
| 6387 | lua_assert(gco2th(o) != L && gco2th(o) != G(L)->mainthread); |
| 6388 | luaE_freethread(L, gco2th(o)); |
| 6389 | break; |
| 6390 | } |
| 6391 | case LUA_TSTRING: { |
| 6392 | G(L)->strt.nuse--; |
| 6393 | luaM_freemem(L, o, sizestring(gco2ts(o))); |
| 6394 | break; |
| 6395 | } |
| 6396 | case LUA_TUSERDATA: { |
| 6397 | luaM_freemem(L, o, sizeudata(gco2u(o))); |
| 6398 | break; |
| 6399 | } |
| 6400 | default: lua_assert(0); |
| 6401 | } |
| 6402 | } |
| 6403 | |
| 6404 | |
| 6405 |
no test coverage detected