Correctly close VM state after early OOM during open.

Reported by Assumeru. #1248
This commit is contained in:
Mike Pall 2024-08-19 16:14:55 +02:00
parent 19db4e9b7c
commit 5ca25ee83e

View File

@ -564,12 +564,11 @@ void lj_gc_finalize_cdata(lua_State *L)
/* Free all remaining GC objects. */ /* Free all remaining GC objects. */
void lj_gc_freeall(global_State *g) void lj_gc_freeall(global_State *g)
{ {
MSize i, strmask; MSize i;
/* Free everything, except super-fixed objects (the main thread). */ /* Free everything, except super-fixed objects (the main thread). */
g->gc.currentwhite = LJ_GC_WHITES | LJ_GC_SFIXED; g->gc.currentwhite = LJ_GC_WHITES | LJ_GC_SFIXED;
gc_fullsweep(g, &g->gc.root); gc_fullsweep(g, &g->gc.root);
strmask = g->strmask; for (i = g->strmask; i != ~(MSize)0; i--) /* Free all string hash chains. */
for (i = 0; i <= strmask; i++) /* Free all string hash chains. */
gc_fullsweep(g, &g->strhash[i]); gc_fullsweep(g, &g->strhash[i]);
} }