Changeset

5022:776a57ca0d84

prosody: Define a getfenv() replacement for Lua 5.2
author Florian Zeitz <florob@babelmonkeys.de>
date Sat, 09 Jun 2012 01:18:21 +0200
parents 5021:85b2689dbcfe
children 5023:dcc8e789df36
files prosody
diffstat 1 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/prosody	Fri Jun 08 05:04:38 2012 +0200
+++ b/prosody	Sat Jun 09 01:18:21 2012 +0200
@@ -145,9 +145,13 @@
 	-- for neat sandboxing of modules
 	local _realG = _G;
 	local _real_require = require;
+	if not getfenv then
+		-- FIXME: This is a hack to replace getfenv() in Lua 5.2
+		function getfenv(f) return debug.getupvalue(debug.getinfo(f or 1).func, 1); end
+	end
 	function require(...)
 		local curr_env = getfenv(2);
-		local curr_env_mt = getmetatable(getfenv(2));
+		local curr_env_mt = getmetatable(curr_env);
 		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_index;