summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpsi29a <psi29a@gmail.com>2022-01-06 08:49:17 +0000
committerpsi29a <psi29a@gmail.com>2022-01-06 08:49:17 +0000
commit1d4de71d35780db3e9a1de81c4dbc14da0f0f2c2 (patch)
tree21f52cd24f319473300d6e9c2417ae5f175acf6b
parent555e0b1f531c05d064bc1d9a2ae0bbb5e09bbea4 (diff)
parent6a19a66ae5fa15c416fc73cfd2a71b7e9a4f9ca8 (diff)
Merge branch 'fix2' into 'master'
Fixes in components/lua Closes #6535 See merge request OpenMW/openmw!1538
-rw-r--r--components/lua/i18n.cpp3
-rw-r--r--components/lua/luastate.cpp2
2 files changed, 4 insertions, 1 deletions
diff --git a/components/lua/i18n.cpp b/components/lua/i18n.cpp
index 9fd2724f75..e4d8e3ba78 100644
--- a/components/lua/i18n.cpp
+++ b/components/lua/i18n.cpp
@@ -99,6 +99,9 @@ namespace LuaUtil
{
if (mI18nLoader == sol::nil)
throw std::runtime_error("LuaUtil::I18nManager is not initialized");
+ auto it = mContexts.find(contextName);
+ if (it != mContexts.end())
+ return sol::make_object(mLua->sol(), it->second);
Context ctx{contextName, mLua->newTable(), call(mI18nLoader, "i18n.init")};
ctx.updateLang(this);
mContexts.emplace(contextName, ctx);
diff --git a/components/lua/luastate.cpp b/components/lua/luastate.cpp
index cee48b4545..6ff698c9c2 100644
--- a/components/lua/luastate.cpp
+++ b/components/lua/luastate.cpp
@@ -170,7 +170,7 @@ namespace LuaUtil
sol::environment env(mLua, sol::create, mSandboxEnv);
sol::table loaded(mLua, sol::create);
for (const std::string& s : safePackages)
- loaded[s] = mSandboxEnv[s];
+ loaded[s] = static_cast<sol::object>(mSandboxEnv[s]);
env["require"] = [this, loaded, env](const std::string& module) mutable
{
if (loaded[module] != sol::nil)