FFI: Avoid dangling cts->L.

Reported by ZumiKua. #1405
This commit is contained in:
Mike Pall
2025-11-10 18:15:11 +01:00
parent c92d0cb192
commit c94312d348

View File

@@ -304,6 +304,10 @@ lua_State *lj_state_new(lua_State *L)
void LJ_FASTCALL lj_state_free(global_State *g, lua_State *L) void LJ_FASTCALL lj_state_free(global_State *g, lua_State *L)
{ {
lua_assert(L != mainthread(g)); lua_assert(L != mainthread(g));
#if LJ_HASFFI
if (ctype_ctsG(g) && ctype_ctsG(g)->L == L) /* Avoid dangling cts->L. */
ctype_ctsG(g)->L = mainthread(g);
#endif
lj_func_closeuv(L, tvref(L->stack)); lj_func_closeuv(L, tvref(L->stack));
lua_assert(gcref(L->openupval) == NULL); lua_assert(gcref(L->openupval) == NULL);
lj_mem_freevec(g, tvref(L->stack), L->stacksize, TValue); lj_mem_freevec(g, tvref(L->stack), L->stacksize, TValue);