From 66f5f2b8b65904e2e5ca093180ca9877d0c6dabe Mon Sep 17 00:00:00 2001 From: Lion Kortlepel Date: Thu, 16 Apr 2026 18:32:54 +0200 Subject: [PATCH] fix error handling from SetErrorMessageFromResult --- include/TLuaEngine.h | 11 +++++++++-- src/TLuaEngine.cpp | 9 +++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/TLuaEngine.h b/include/TLuaEngine.h index 96479dd..b11a928 100644 --- a/include/TLuaEngine.h +++ b/include/TLuaEngine.h @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -86,8 +87,14 @@ struct TLuaResult { }; void SetErrorMessageFromResult(sol::protected_function_result& Res) { - auto error = Res.get>(); - ErrorMessage = error ? *error : "(unknown error; error object is not a string value)"; + if (Res.valid()) { + beammp_lua_errorf("Error was not an error"); + } + if (Res.get_type() == sol::type::string) { + ErrorMessage = Res.get().what(); + } else { + ErrorMessage = "(unknown error; error object is not inspectable)"; + } } void MarkAsReady(); diff --git a/src/TLuaEngine.cpp b/src/TLuaEngine.cpp index 7481dd1..d5e89cf 100644 --- a/src/TLuaEngine.cpp +++ b/src/TLuaEngine.cpp @@ -550,8 +550,13 @@ sol::table TLuaEngine::StateThreadData::Lua_TriggerLocalEvent(const std::string& Result.set(i, FnRet); ++i; } else { - auto ErrStr = FnRet.get>(); - beammp_lua_error(std::string("TriggerLocalEvent: ") + (ErrStr ? *ErrStr : "(unknown error; error object is not a string)")); + std::string ErrStr; + if (FnRet.get_type() == sol::type::string) { + ErrStr = FnRet.get().what(); + } else { + ErrStr = "(unknown error; error object is not inspectable)"; + } + beammp_lua_errorf("TriggerLocalEvent: {}", ErrStr); } } }