فهرست منبع

do not attempt emergency collection while building state (it is
useless, and state can be inconsistent)

Roberto Ierusalimschy 10 سال پیش
والد
کامیت
b9a1f27250
1فایلهای تغییر یافته به همراه5 افزوده شده و 3 حذف شده
  1. 5 3
      lmem.c

+ 5 - 3
lmem.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lmem.c,v 1.88 2014/11/02 19:19:04 roberto Exp roberto $
+** $Id: lmem.c,v 1.89 2014/11/02 19:33:33 roberto Exp roberto $
 ** Interface to Memory Manager
 ** See Copyright Notice in lua.h
 */
@@ -87,8 +87,10 @@ void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t nsize) {
   if (newblock == NULL && nsize > 0) {
     api_check( nsize > realosize,
                  "realloc cannot fail when shrinking a block");
-    luaC_fullgc(L, 1);  /* try to free some memory... */
-    newblock = (*g->frealloc)(g->ud, block, osize, nsize);  /* try again */
+    if (g->version) {  /* is state fully built? */
+      luaC_fullgc(L, 1);  /* try to free some memory... */
+      newblock = (*g->frealloc)(g->ud, block, osize, nsize);  /* try again */
+    }
     if (newblock == NULL)
       luaD_throw(L, LUA_ERRMEM);
   }