1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-02-21 18:40:01 +00:00

Fix crash when passing a non-callback table to a callback argument

This commit is contained in:
uramer 2024-02-12 20:28:56 +01:00
parent c889026b71
commit 35448bf0fe

View File

@ -24,7 +24,11 @@ namespace LuaUtil
Callback Callback::fromLua(const sol::table& t)
{
return Callback{ t.raw_get<sol::main_protected_function>(1), t.raw_get<AsyncPackageId>(2).mHiddenData };
const sol::object& function = t.get_or(1, sol::nil);
const sol::object& asyncPackageId = t.get_or(2, sol::nil);
if (!function.is<sol::main_protected_function>() || !asyncPackageId.is<AsyncPackageId>())
throw std::domain_error("Expected an async:callback, received a table");
return Callback{ function.as<sol::main_protected_function>(), asyncPackageId.as<AsyncPackageId>().mHiddenData };
}
bool Callback::isLuaCallback(const sol::object& t)