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); } } }