diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lj_state.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/lj_state.c b/src/lj_state.c index 9d4fdcee..68e78faa 100644 --- a/src/lj_state.c +++ b/src/lj_state.c | |||
| @@ -377,6 +377,10 @@ void LJ_FASTCALL lj_state_free(global_State *g, lua_State *L) | |||
| 377 | lj_assertG(L != mainthread(g), "free of main thread"); | 377 | lj_assertG(L != mainthread(g), "free of main thread"); |
| 378 | if (obj2gco(L) == gcref(g->cur_L)) | 378 | if (obj2gco(L) == gcref(g->cur_L)) |
| 379 | setgcrefnull(g->cur_L); | 379 | setgcrefnull(g->cur_L); |
| 380 | #if LJ_HASFFI | ||
| 381 | if (ctype_ctsG(g) && ctype_ctsG(g)->L == L) /* Avoid dangling cts->L. */ | ||
| 382 | ctype_ctsG(g)->L = mainthread(g); | ||
| 383 | #endif | ||
| 380 | if (gcref(L->openupval) != NULL) { | 384 | if (gcref(L->openupval) != NULL) { |
| 381 | lj_func_closeuv(L, tvref(L->stack)); | 385 | lj_func_closeuv(L, tvref(L->stack)); |
| 382 | lj_trace_abort(g); /* For aa_uref soundness. */ | 386 | lj_trace_abort(g); /* For aa_uref soundness. */ |
