Преглед на файлове

GC called after errors now are called after showing error message (to
avoid problems when there are other errors during GC itself)

Roberto Ierusalimschy преди 17 години
родител
ревизия
1527d8f00d
променени са 1 файла, в които са добавени 3 реда и са изтрити 3 реда
  1. 3 3
      lua.c

+ 3 - 3
lua.c

@@ -1,5 +1,5 @@
 /*
-** $Id: lua.c,v 1.167 2007/08/07 16:53:40 roberto Exp roberto $
+** $Id: lua.c,v 1.168 2007/09/05 17:17:39 roberto Exp roberto $
 ** Lua stand-alone interpreter
 ** See Copyright Notice in lua.h
 */
@@ -68,6 +68,8 @@ static int report (lua_State *L, int status) {
     if (msg == NULL) msg = "(error object is not a string)";
     l_message(progname, msg);
     lua_pop(L, 1);
+    /* force a complete garbage collection in case of errors */
+    lua_gc(L, LUA_GCCOLLECT, 0);
   }
   return status;
 }
@@ -95,8 +97,6 @@ static int docall (lua_State *L, int narg, int clear) {
   status = lua_pcall(L, narg, (clear ? 0 : LUA_MULTRET), base);
   signal(SIGINT, SIG_DFL);
   lua_remove(L, base);  /* remove traceback function */
-  /* force a complete garbage collection in case of errors */
-  if (status != LUA_OK) lua_gc(L, LUA_GCCOLLECT, 0);
   return status;
 }