lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Hi all, 

lua.c defines a function for opening all standard libraries. Here is the body

static void openstdlibs (lua_State *l) {
  const luaL_reg *lib = lualibs;
  /*lua_checkstack(l, 1000); <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/
  for (; lib->func; lib++) {
    lib->func(l);  /* open library */
    lua_settop(l, 0);  /* discard any results */

I added the line marked by'<<<<...'. Uncommenting this line leads to a failed assert in traversestack() (line:245 / lgc.c) while still in openstdlibs above. Basically, growing Lua stack to a much larger size than what Lua creates by default causes some kind of a problem. Is this a problem indeed or am I misusing lua_checkstack? Could you verify this on your machine? Before you start you will need to define lua_assert to actually do something, as by default it is defined to do nothing.

According to documentation lua_checkstack grows Lua stack to be no smaller than the size specified (1000 in the above case). Apparently it has the above side effect in addition to growing the stack.