Explorar o código

Correctly close VM state after early OOM during open.

Reported by Assumeru. #1248
Mike Pall hai 1 ano
pai
achega
5ca25ee83e
Modificáronse 1 ficheiros con 2 adicións e 3 borrados
  1. 2 3
      src/lj_gc.c

+ 2 - 3
src/lj_gc.c

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