From 6a6edda0491119cbba249bae847986313f8c09e0 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Fri, 5 Sep 2008 18:35:09 +0000 Subject: [PATCH] Heavy memory/performance optimizations #4 --- libs/web/luasrc/dispatcher.lua | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua index 09e99e7de..599d652f4 100644 --- a/libs/web/luasrc/dispatcher.lua +++ b/libs/web/luasrc/dispatcher.lua @@ -160,9 +160,10 @@ function dispatch(request) -- Init template engine if not track.notemplate then local tpl = require("luci.template") - local viewns = {} + local viewns = setmetatable({}, {__index=_G}) tpl.context.viewns = viewns viewns.write = luci.http.write + viewns.include = function(name) tpl.Template(name):render(getfenv(2)) end viewns.translate = function(...) return require("luci.i18n").translate(...) end viewns.striptags = util.striptags viewns.controller = luci.http.getenv("SCRIPT_NAME") @@ -219,7 +220,15 @@ function dispatch(request) context.dispatched = c util.copcall(function() - util.updfenv(c.target, require(c.module)) + local oldenv = getfenv(c.target) + local module = require(c.module) + local env = setmetatable({}, {__index= + + function(tbl, key) + return rawget(tbl, key) or module[key] or oldenv[key] + end}) + + setfenv(c.target, env) end) c.target(unpack(args)) -- 2.11.0