mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Push error handler afresh each time lua_pcall is used
Fixes "double fault" / "error in error handling" messages (issue #1423) and instead shows a complete backtrace.
This commit is contained in:
parent
8658c8d9b5
commit
3304e1e517
16 changed files with 188 additions and 92 deletions
|
@ -43,6 +43,8 @@ void ScriptApiMainMenu::handleMainMenuEvent(std::string text)
|
|||
{
|
||||
SCRIPTAPI_PRECHECKHEADER
|
||||
|
||||
int error_handler = PUSH_ERROR_HANDLER(L);
|
||||
|
||||
// Get handler function
|
||||
lua_getglobal(L, "core");
|
||||
lua_getfield(L, -1, "event_handler");
|
||||
|
@ -55,13 +57,16 @@ void ScriptApiMainMenu::handleMainMenuEvent(std::string text)
|
|||
|
||||
// Call it
|
||||
lua_pushstring(L, text.c_str());
|
||||
PCALL_RES(lua_pcall(L, 1, 0, m_errorhandler));
|
||||
PCALL_RES(lua_pcall(L, 1, 0, error_handler));
|
||||
lua_pop(L, 1); // Pop error handler
|
||||
}
|
||||
|
||||
void ScriptApiMainMenu::handleMainMenuButtons(const StringMap &fields)
|
||||
{
|
||||
SCRIPTAPI_PRECHECKHEADER
|
||||
|
||||
int error_handler = PUSH_ERROR_HANDLER(L);
|
||||
|
||||
// Get handler function
|
||||
lua_getglobal(L, "core");
|
||||
lua_getfield(L, -1, "button_handler");
|
||||
|
@ -84,6 +89,7 @@ void ScriptApiMainMenu::handleMainMenuButtons(const StringMap &fields)
|
|||
}
|
||||
|
||||
// Call it
|
||||
PCALL_RES(lua_pcall(L, 1, 0, m_errorhandler));
|
||||
PCALL_RES(lua_pcall(L, 1, 0, error_handler));
|
||||
lua_pop(L, 1); // Pop error handler
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue