diff --git a/src/script/engines/lua.c b/src/script/engines/lua.c index fca966d66..ae34066e7 100644 --- a/src/script/engines/lua.c +++ b/src/script/engines/lua.c @@ -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); diff --git a/src/script/test/lua.c b/src/script/test/lua.c index 9ec08f945..437fe4131 100644 --- a/src/script/test/lua.c +++ b/src/script/test/lua.c @@ -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); }