Re: Install __newindex for _G in C
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: Install __newindex for _G in C
- From: nobody <nobody+lua-list@...>
- Date: 2021年10月14日 16:31:25 +0200
Have you checked what you're actually doing, on the Lua-level?
> void GLOBAL_lock (lua_State *L) {
> luaL_newmetatable( L, "_G"));
> lua_pushvalue(L, -1); /* duplicate the metatable */
> lua_setfield(L, -2, "__index");
> lua_pushcfunction( L, lock_new_index);
> lua_setfield( L, -2, "__newindex");
> luaL_setmetatable( L, "_G");
> }
That's effectively a
local temp = {} ; debug.getregistry()._G = temp
temp.__index = temp
temp.__newindex = lock_new_index
debug.setmetatable( temp, debug.getregistry()._G )
…and then you're not saving temp anywhere where you can experiment with it from Lua. You probably wanted to push the global environment at some point?
-- nobody