Is it possible to get all the errors in the lua stack from C/C++? here is what I've tried
c++
int main()
{
lua_State* L = luaL_newstate();
luaL_openlibs(L);
if (luaL_loadfile(L, "LuaBridgeScript.lua"))
{
throw std::runtime_error("Unable to find lua file");
}
int error = lua_pcall(L, 0, 0, 0);
while (error && lua_gettop(L))
{
std::cout << "stack = " << lua_gettop(L) << "\n";
std::cout << "error = " << error << "\n";
std::cout << "message = " << lua_tostring(L, -1) << "\n";
lua_pop(L, 1);
error = lua_pcall(L, 0, 0, 0);
}
}
lua:
printMessage("hi")
printMessage2("hi2")
output:
stack = 1
error = 2
message = LuaBridgeScript.lua:1: attempt to call global 'printMessage' <a nil value>
I've also tried looping even if the stack size is 0 or negative, but I don't understand how the stack could be negative, and the program crashes after a few attempts.
lua_pcall
will return as soon as the first error is caught. It will stop atprintMessage
and not continue execution of the chunk. Where did you get the idea that there would be more errors on the stack? Docs states that clearly. – Leighannleighland