Fix possible panic in Eluna::ExecuteCall.

The panic shouldn't actually be possible due to checks in the different
Register functions, but more checks doesn't hurt.
This commit is contained in:
Patman64
2014-08-11 00:53:01 -04:00
parent 8ab66a5eab
commit 540fa9ca18

View File

@@ -326,7 +326,15 @@ void Eluna::report(lua_State* L)
void Eluna::ExecuteCall(lua_State* L, int params, int res) void Eluna::ExecuteCall(lua_State* L, int params, int res)
{ {
int top = lua_gettop(L); int top = lua_gettop(L);
luaL_checktype(L, top - params, LUA_TFUNCTION); int type = lua_type(L, top - params);
if (type != LUA_TFUNCTION)
{
lua_pop(L, params + 1); // Cleanup the stack.
ELUNA_LOG_ERROR("[Eluna]: Cannot execute call: registered value is a %s, not a function.", lua_typename(L, type));
return;
}
if (lua_pcall(L, params, res, 0)) if (lua_pcall(L, params, res, 0))
report(L); report(L);
} }