check lua stack size to avoid possible overflows
This commit is contained in:
parent
2dde63d2bc
commit
7a529d23be
|
@ -974,42 +974,50 @@ void* LuaInterface::popUpvalueUserdata()
|
||||||
void LuaInterface::pushNil()
|
void LuaInterface::pushNil()
|
||||||
{
|
{
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushInteger(int v)
|
void LuaInterface::pushInteger(int v)
|
||||||
{
|
{
|
||||||
lua_pushinteger(L, v);
|
lua_pushinteger(L, v);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushNumber(double v)
|
void LuaInterface::pushNumber(double v)
|
||||||
{
|
{
|
||||||
lua_pushnumber(L, v);
|
lua_pushnumber(L, v);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushBoolean(bool v)
|
void LuaInterface::pushBoolean(bool v)
|
||||||
{
|
{
|
||||||
lua_pushboolean(L, v);
|
lua_pushboolean(L, v);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushCString(const char* v)
|
void LuaInterface::pushCString(const char* v)
|
||||||
{
|
{
|
||||||
assert(v);
|
assert(v);
|
||||||
lua_pushstring(L, v);
|
lua_pushstring(L, v);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushString(const std::string& v)
|
void LuaInterface::pushString(const std::string& v)
|
||||||
{
|
{
|
||||||
lua_pushlstring(L, v.c_str(), v.length());
|
lua_pushlstring(L, v.c_str(), v.length());
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushLightUserdata(void* p)
|
void LuaInterface::pushLightUserdata(void* p)
|
||||||
{
|
{
|
||||||
lua_pushlightuserdata(L, p);
|
lua_pushlightuserdata(L, p);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushThread()
|
void LuaInterface::pushThread()
|
||||||
{
|
{
|
||||||
lua_pushthread(L);
|
lua_pushthread(L);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushObject(const LuaObjectPtr& obj)
|
void LuaInterface::pushObject(const LuaObjectPtr& obj)
|
||||||
|
@ -1026,6 +1034,7 @@ void LuaInterface::pushObject(const LuaObjectPtr& obj)
|
||||||
void LuaInterface::pushCFunction(LuaCFunction func, int n)
|
void LuaInterface::pushCFunction(LuaCFunction func, int n)
|
||||||
{
|
{
|
||||||
lua_pushcclosure(L, func, n);
|
lua_pushcclosure(L, func, n);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LuaInterface::pushCppFunction(const LuaCppFunction& func)
|
void LuaInterface::pushCppFunction(const LuaCppFunction& func)
|
||||||
|
@ -1047,6 +1056,7 @@ void LuaInterface::pushValue(int index)
|
||||||
{
|
{
|
||||||
assert(hasIndex(index));
|
assert(hasIndex(index));
|
||||||
lua_pushvalue(L, index);
|
lua_pushvalue(L, index);
|
||||||
|
checkStack();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LuaInterface::isNil(int index)
|
bool LuaInterface::isNil(int index)
|
||||||
|
|
|
@ -221,6 +221,7 @@ public:
|
||||||
void remove(int index);
|
void remove(int index);
|
||||||
bool next(int index = -2);
|
bool next(int index = -2);
|
||||||
|
|
||||||
|
void checkStack() { assert(getTop() <= 20); }
|
||||||
void getStackFunction(int level = 0);
|
void getStackFunction(int level = 0);
|
||||||
|
|
||||||
void getRef(int ref);
|
void getRef(int ref);
|
||||||
|
|
Loading…
Reference in New Issue