]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Merge branch 'master' into v2.1
authorMike Pall <mike>
Mon, 10 Nov 2025 17:18:19 +0000 (18:18 +0100)
committerMike Pall <mike>
Mon, 10 Nov 2025 17:18:19 +0000 (18:18 +0100)
1  2 
src/lj_state.c

diff --cc src/lj_state.c
index 9d4fdcee3aadf874c4c571927d69a8507acf769d,18a55e7227e19deac2b14d891025e7f79c917d3f..68e78faad1a37e668e929584cf10193d3b700683
@@@ -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);
  }