aboutsummaryrefslogtreecommitdiff
path: root/linit.c
diff options
context:
space:
mode:
Diffstat (limited to 'linit.c')
-rw-r--r--linit.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/linit.c b/linit.c
index da414468..5d447c6d 100644
--- a/linit.c
+++ b/linit.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: linit.c,v 1.8 2004/07/09 15:47:48 roberto Exp roberto $ 2** $Id: linit.c,v 1.9 2005/02/18 12:40:02 roberto Exp roberto $
3** Initialization of libraries for lua.c 3** Initialization of libraries for lua.c
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -29,12 +29,15 @@ static const luaL_reg lualibs[] = {
29 29
30LUALIB_API int luaopen_stdlibs (lua_State *L) { 30LUALIB_API int luaopen_stdlibs (lua_State *L) {
31 const luaL_reg *lib = lualibs; 31 const luaL_reg *lib = lualibs;
32 int t = lua_gettop(L);
33 lua_pushvalue(L, LUA_ENVIRONINDEX); /* save original environment */
32 for (; lib->func; lib++) { 34 for (; lib->func; lib++) {
33 lib->func(L); /* open library */ 35 lib->func(L); /* open library */
34 lua_settop(L, 0); /* discard any results */ 36 lua_settop(L, t + 1); /* discard any results */
35 lua_pushvalue(L, LUA_GLOBALSINDEX); 37 lua_pushvalue(L, -1);
36 lua_replace(L, LUA_ENVIRONINDEX); /* restore environment */ 38 lua_replace(L, LUA_ENVIRONINDEX); /* restore environment */
37 } 39 }
38 return 0; 40 lua_pop(L, 1);
41 return 0;
39} 42}
40 43