mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-04-01 00:06:58 +00:00
Strict Globals (#583)
This commit is contained in:
parent
c35707725f
commit
9a749642d2
@ -523,6 +523,16 @@ function os.run(_tEnv, _sPath, ...)
|
||||
|
||||
local tEnv = _tEnv
|
||||
setmetatable(tEnv, { __index = _G })
|
||||
|
||||
if settings.get("bios.strict_globals", false) then
|
||||
-- load will attempt to set _ENV on this environment, which
|
||||
-- throws an error with this protection enabled. Thus we set it here first.
|
||||
tEnv._ENV = tEnv
|
||||
getmetatable(tEnv).__newindex = function(_, name)
|
||||
error("Attempt to create global " .. tostring(name), 2)
|
||||
end
|
||||
end
|
||||
|
||||
local fnFile, err = loadfile(_sPath, nil, tEnv)
|
||||
if fnFile then
|
||||
local ok, err = pcall(fnFile, ...)
|
||||
@ -954,6 +964,11 @@ settings.define("lua.function_source", {
|
||||
description = "Show where a function was defined when printing functions.",
|
||||
type = "boolean",
|
||||
})
|
||||
settings.define("bios.strict_globals", {
|
||||
default = false,
|
||||
description = "Prevents assigning variables into a program's environment. Make sure you use the local keyword or assign to _G explicitly.",
|
||||
type = "boolean",
|
||||
})
|
||||
|
||||
if term.isColour() then
|
||||
settings.define("bios.use_multishell", {
|
||||
|
Loading…
x
Reference in New Issue
Block a user