[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: setfenv/getfenv
- From: Ignacio Burgueño <ignaciob@...>
- Date: Tue, 12 Jan 2010 16:27:37 -0200
On 12/01/2010 15:55, Jerome Vuarand wrote:
One way to restrict such abusive uses, which can easily become a mess
(I guess all agree on that), would have been to restrict
setfenv/getfenv so they no longer can take their integer parameter,
ie. they can only modified a function that is passed directly as a
reference rather than a call stack index.
I agree about setfenv not able to take call stack indexes, but how about
getfenv? It allows me to run some function in the context of the caller.
Like this code to fix 'dofile' so the code it executes does not pollute
_G with its globals.
How can this be rewritten as a general purpose function without getfenv?
local __old_dofile = dofile
function dofile(name)
local f,e = loadfile(name)
if not f then error(e, 2) end
setfenv(f, getfenv(2))
return f()
end
P.S. Is this behaviour of dofile going to change?