Explorar el Código

Gracefully handle broken custom allocator.

Reported by Alex Orlenko. #1393
Mike Pall hace 2 meses
padre
commit
5c3254d68d
Se han modificado 1 ficheros con 5 adiciones y 1 borrados
  1. 5 1
      src/lj_state.c

+ 5 - 1
src/lj_state.c

@@ -261,7 +261,11 @@ LUA_API lua_State *lua_newstate(lua_Alloc allocf, void *allocd)
   }
 #endif
   GG = (GG_State *)allocf(allocd, NULL, 0, sizeof(GG_State));
-  if (GG == NULL || !checkptrGC(GG)) return NULL;
+  if (GG == NULL) return NULL;
+  if (!checkptrGC(GG)) {
+    allocf(allocd, GG, sizeof(GG_State), 0);
+    return NULL;
+  }
   memset(GG, 0, sizeof(GG_State));
   L = &GG->L;
   g = &GG->g;