diff options
Diffstat (limited to 'prosody')
-rwxr-xr-x | prosody | 21 |
1 files changed, 20 insertions, 1 deletions
@@ -32,7 +32,26 @@ end -- Required to be able to find packages installed with luarocks pcall(require, "luarocks.require") -require "util.require"; + +-- Replace require with one that doesn't pollute _G +do + local _realG = _G; + local _real_require = require; + function require(...) + local curr_env = getfenv(2); + local curr_env_mt = getmetatable(getfenv(2)); + local _realG_mt = getmetatable(_realG); + if curr_env_mt and curr_env_mt.__index and not curr_env_mt.__newindex and _realG_mt then + local old_newindex + old_newindex, _realG_mt.__newindex = _realG_mt.__newindex, curr_env; + local ret = _real_require(...); + _realG_mt.__newindex = old_newindex; + return ret; + end + return _real_require(...); + end +end + config = require "core.configmanager" |