| 376 | |
| 377 | |
| 378 | static void freeobj (lua_State *L, GCObject *o) { |
| 379 | switch (o->gch.tt) { |
| 380 | case LUA_TPROTO: luaF_freeproto(L, gco2p(o)); break; |
| 381 | case LUA_TFUNCTION: luaF_freeclosure(L, gco2cl(o)); break; |
| 382 | case LUA_TUPVAL: luaF_freeupval(L, gco2uv(o)); break; |
| 383 | case LUA_TTABLE: luaH_free(L, gco2h(o)); break; |
| 384 | case LUA_TTHREAD: { |
| 385 | lua_assert(gco2th(o) != L && gco2th(o) != G(L)->mainthread); |
| 386 | luaE_freethread(L, gco2th(o)); |
| 387 | break; |
| 388 | } |
| 389 | case LUA_TSTRING: { |
| 390 | G(L)->strt.nuse--; |
| 391 | luaM_freemem(L, o, sizestring(gco2ts(o))); |
| 392 | break; |
| 393 | } |
| 394 | case LUA_TUSERDATA: { |
| 395 | luaM_freemem(L, o, sizeudata(gco2u(o))); |
| 396 | break; |
| 397 | } |
| 398 | default: lua_assert(0); |
| 399 | } |
| 400 | } |
| 401 | |
| 402 | |
| 403 |
no test coverage detected