summaryrefslogtreecommitdiff
path: root/src/config/lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/config/lua')
-rw-r--r--src/config/lua/ConfigManager.cpp2
-rw-r--r--src/config/lua/LuaEventHandler.cpp9
2 files changed, 7 insertions, 4 deletions
diff --git a/src/config/lua/ConfigManager.cpp b/src/config/lua/ConfigManager.cpp
index 7819ff2e..b4fc791d 100644
--- a/src/config/lua/ConfigManager.cpp
+++ b/src/config/lua/ConfigManager.cpp
@@ -160,7 +160,7 @@ static int safeLuaRequire(lua_State* L) {
WP<CConfigManager> Lua::mgr() {
auto& mgr = Config::mgr();
- if (mgr->type() != CONFIG_LUA)
+ if (!mgr || mgr->type() != CONFIG_LUA)
return nullptr;
return dynamicPointerCast<Lua::CConfigManager>(WP<IConfigManager>(mgr));
diff --git a/src/config/lua/LuaEventHandler.cpp b/src/config/lua/LuaEventHandler.cpp
index eb4f6bc5..fbb44dac 100644
--- a/src/config/lua/LuaEventHandler.cpp
+++ b/src/config/lua/LuaEventHandler.cpp
@@ -61,15 +61,18 @@ void CLuaEventHandler::dispatch(const std::string& name, int nargs, const std::f
lua_rawgeti(m_lua, LUA_REGISTRYINDEX, sub->second.luaRef);
pushArgs();
- int status = LUA_OK;
- if (auto* mgr = CConfigManager::fromLuaState(m_lua); mgr)
+ auto* mgr = CConfigManager::fromLuaState(m_lua);
+
+ int status = LUA_OK;
+ if (mgr)
status = mgr->guardedPCall(nargs, 0, 0, CConfigManager::LUA_TIMEOUT_EVENT_CALLBACK_MS, std::format("hl.on(\"{}\") callback", name));
else
status = lua_pcall(m_lua, nargs, 0, 0);
if (status != LUA_OK) {
const char* err = lua_tostring(m_lua, -1);
- Config::Lua::mgr()->addError(std::format("hl.on(\"{}\") callback: {}", name, err ? err : "(unknown)"));
+ if (mgr)
+ mgr->addError(std::format("hl.on(\"{}\") callback: {}", name, err ? err : "(unknown)"));
lua_pop(m_lua, 1);
}
}