From: Mike Pall Date: Mon, 10 Nov 2025 17:18:19 +0000 (+0100) Subject: Merge branch 'master' into v2.1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eba91fceb67a0a0163a9222869bf254c988c48c4;p=thirdparty%2FLuaJIT.git Merge branch 'master' into v2.1 --- eba91fceb67a0a0163a9222869bf254c988c48c4 diff --cc src/lj_state.c index 9d4fdcee,18a55e72..68e78faa --- a/src/lj_state.c +++ b/src/lj_state.c @@@ -374,14 -303,13 +374,18 @@@ lua_State *lj_state_new(lua_State *L void LJ_FASTCALL lj_state_free(global_State *g, lua_State *L) { - lua_assert(L != mainthread(g)); + lj_assertG(L != mainthread(g), "free of main thread"); + if (obj2gco(L) == gcref(g->cur_L)) + setgcrefnull(g->cur_L); + #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)); - lua_assert(gcref(L->openupval) == NULL); + if (gcref(L->openupval) != NULL) { + lj_func_closeuv(L, tvref(L->stack)); + lj_trace_abort(g); /* For aa_uref soundness. */ + lj_assertG(gcref(L->openupval) == NULL, "stale open upvalues"); + } lj_mem_freevec(g, tvref(L->stack), L->stacksize, TValue); lj_mem_freet(g, L); }