Use LuaUtil::cast for casting sol::object to prevent crashing on type mismatch in Lua scripts.

This commit is contained in:
Petr Mikheev 2023-04-25 22:11:04 +02:00
parent 61578ca39b
commit c362b2efa6
12 changed files with 48 additions and 46 deletions

View file

@ -78,7 +78,7 @@ namespace LuaUi
{
sol::object result = callMethod("indexOf", name);
if (result.is<size_t>())
return fromLua(result.as<size_t>());
return fromLua(LuaUtil::cast<size_t>(result));
else
return std::nullopt;
}
@ -86,7 +86,7 @@ namespace LuaUi
{
sol::object result = callMethod("indexOf", table);
if (result.is<size_t>())
return fromLua(result.as<size_t>());
return fromLua(LuaUtil::cast<size_t>(result));
else
return std::nullopt;
}

View file

@ -63,7 +63,7 @@ namespace LuaUi
destroyWidget(w);
return result;
}
ContentView content(contentObj.as<sol::table>());
ContentView content(LuaUtil::cast<sol::table>(contentObj));
result.resize(content.size());
size_t minSize = std::min(children.size(), content.size());
for (size_t i = 0; i < minSize; i++)

View file

@ -36,7 +36,7 @@ namespace LuaUi
private:
Element(sol::table layout);
sol::table layout() { return mLayout.as<sol::table>(); }
sol::table layout() { return LuaUtil::cast<sol::table>(mLayout); }
static std::map<Element*, std::shared_ptr<Element>> sAllElements;
void updateAttachment();
};