diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2009-12-01 00:15:47 +0100 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2009-12-01 00:19:21 +0100 |
commit | 3699ebd1770218368902469a32daf13ce6057408 (patch) | |
tree | 2cf8c645bf46b8ffd8b570fbb9ae0ef6feda6671 /lib/BLua.cc | |
parent | 137e20e9667287541991e4196097bd48fae3a2f0 (diff) |
Trying to better cleanup the stack after the various opens.
Diffstat (limited to 'lib/BLua.cc')
-rw-r--r-- | lib/BLua.cc | 39 |
1 files changed, 30 insertions, 9 deletions
diff --git a/lib/BLua.cc b/lib/BLua.cc index 0a763aa..ba5497a 100644 --- a/lib/BLua.cc +++ b/lib/BLua.cc @@ -545,6 +545,7 @@ Lua::Lua(const Lua & l) throw (GeneralException) { } void Lua::open_base() { + int n = gettop(); luaopen_base(L); push("mkdir"); push(LuaStatics::mkdir); @@ -552,7 +553,19 @@ void Lua::open_base() { push("time"); push(LuaStatics::time); settable(); - lua_pop(L, 1); + push("getenv"); + push(LuaStatics::getenv); + settable(); + push("setenv"); + push(LuaStatics::setenv); + settable(); + push("unsetenv"); + push(LuaStatics::unsetenv); + settable(); + push("sleep"); + push(LuaStatics::sleep); + settable(); + for (remove(n); n <= gettop(); remove(n)); push("mkdir"); push(LuaStatics::mkdir); settable(LUA_GLOBALSINDEX); @@ -574,31 +587,36 @@ void Lua::open_base() { } void Lua::open_table() { + int n = gettop(); luaopen_table(L); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } void Lua::open_io(bool safe) { + int n = gettop(); luaopen_io(L); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } void Lua::open_string() { + int n = gettop(); luaopen_string(L); push("iconv"); push(LuaStatics::iconv); settable(); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } void Lua::open_math() { + int n = gettop(); luaopen_math(L); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } void Lua::open_debug() { + int n = gettop(); luaopen_debug(L); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } extern "C" { @@ -606,18 +624,21 @@ LUALIB_API int (luaopen_dir) (lua_State *L); } void Lua::open_dir() { + int n = gettop(); luaopen_dir(L); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } void Lua::open_jit() { + int n = gettop(); luaopen_jit(L); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } void Lua::open_bit() { + int n = gettop(); luaopen_bit(L); - lua_pop(L, 1); + for (remove(n); n <= gettop(); remove(n)); } void Lua::declarefunc(const String & name, lua_CFunction f, int i) { |