From 6687c617d9c3adb6d441241d0e96ee77fda09e12 Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 21 Mar 2026 06:08:17 -0700 Subject: [PATCH] fix: display Lua errors from OnUpdate, executeFile, executeString as UI errors Extend the Lua error UI display to cover all error paths: - OnUpdate frame callbacks (previously only logged) - executeFile loading errors (now also shown as UI error) - executeString /run errors (now also shown as UI error) This ensures addon developers see ALL Lua errors in-game, not just event handler errors from the previous commit. --- src/addons/lua_engine.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/addons/lua_engine.cpp b/src/addons/lua_engine.cpp index f64eabfb..12e7f8fb 100644 --- a/src/addons/lua_engine.cpp +++ b/src/addons/lua_engine.cpp @@ -3891,7 +3891,10 @@ void LuaEngine::dispatchOnUpdate(float elapsed) { lua_pushvalue(L_, -3); // self (frame) lua_pushnumber(L_, static_cast(elapsed)); if (lua_pcall(L_, 2, 0, 0) != 0) { - LOG_ERROR("LuaEngine: OnUpdate error: ", lua_tostring(L_, -1)); + const char* uerr = lua_tostring(L_, -1); + std::string uerrStr = uerr ? uerr : "(unknown)"; + LOG_ERROR("LuaEngine: OnUpdate error: ", uerrStr); + if (luaErrorCallback_) luaErrorCallback_(uerrStr); lua_pop(L_, 1); } } else { @@ -4098,6 +4101,7 @@ bool LuaEngine::executeFile(const std::string& path) { const char* errMsg = lua_tostring(L_, -1); std::string msg = errMsg ? errMsg : "(unknown error)"; LOG_ERROR("LuaEngine: error loading '", path, "': ", msg); + if (luaErrorCallback_) luaErrorCallback_(msg); if (gameHandler_) { game::MessageChatData errChat; errChat.type = game::ChatType::SYSTEM; @@ -4119,6 +4123,7 @@ bool LuaEngine::executeString(const std::string& code) { const char* errMsg = lua_tostring(L_, -1); std::string msg = errMsg ? errMsg : "(unknown error)"; LOG_ERROR("LuaEngine: script error: ", msg); + if (luaErrorCallback_) luaErrorCallback_(msg); if (gameHandler_) { game::MessageChatData errChat; errChat.type = game::ChatType::SYSTEM;