diff options
Diffstat (limited to 'dynasm/dynasm.lua')
-rw-r--r-- | dynasm/dynasm.lua | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/dynasm/dynasm.lua b/dynasm/dynasm.lua index b89d6cfc..2ef81647 100644 --- a/dynasm/dynasm.lua +++ b/dynasm/dynasm.lua | |||
@@ -259,9 +259,17 @@ local condstack = {} | |||
259 | 259 | ||
260 | -- Evaluate condition with a Lua expression. Substitutions already performed. | 260 | -- Evaluate condition with a Lua expression. Substitutions already performed. |
261 | local function cond_eval(cond) | 261 | local function cond_eval(cond) |
262 | local func, err = loadstring("return "..cond) | 262 | local func, err |
263 | if setfenv then | ||
264 | func, err = loadstring("return "..cond, "=expr") | ||
265 | else | ||
266 | -- No globals. All unknown identifiers evaluate to nil. | ||
267 | func, err = load("return "..cond, "=expr", "t", {}) | ||
268 | end | ||
263 | if func then | 269 | if func then |
264 | setfenv(func, {}) -- No globals. All unknown identifiers evaluate to nil. | 270 | if setfenv then |
271 | setfenv(func, {}) -- No globals. All unknown identifiers evaluate to nil. | ||
272 | end | ||
265 | local ok, res = pcall(func) | 273 | local ok, res = pcall(func) |
266 | if ok then | 274 | if ok then |
267 | if res == 0 then return false end -- Oh well. | 275 | if res == 0 then return false end -- Oh well. |