Scripting: Fix unsetting globals in Lua

This commit is contained in:
Vicki Pfau 2022-05-08 20:03:13 -07:00
parent 8326ecddce
commit cdfa6ac54b
2 changed files with 7 additions and 1 deletions

View File

@ -142,7 +142,9 @@ struct mScriptValue* _luaGetGlobal(struct mScriptEngineContext* ctx, const char*
bool _luaSetGlobal(struct mScriptEngineContext* ctx, const char* name, struct mScriptValue* value) {
struct mScriptEngineContextLua* luaContext = (struct mScriptEngineContextLua*) ctx;
if (!_luaWrap(luaContext, value)) {
if (!value) {
lua_pushnil(luaContext->lua);
} else if (!_luaWrap(luaContext, value)) {
return false;
}
lua_setglobal(luaContext->lua, name);

View File

@ -243,6 +243,10 @@ M_TEST_DEFINE(setGlobal) {
assert_true(a.type->equal(&a, val));
mScriptValueDeref(val);
assert_true(lua->setGlobal(lua, "b", NULL));
val = lua->getGlobal(lua, "b");
assert_null(val);
mScriptContextDeinit(&context);
}