summaryrefslogtreecommitdiff
path: root/lib/supple/sandbox.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lib/supple/sandbox.lua')
-rw-r--r--lib/supple/sandbox.lua12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/supple/sandbox.lua b/lib/supple/sandbox.lua
index bcb2cb8..f4025bc 100644
--- a/lib/supple/sandbox.lua
+++ b/lib/supple/sandbox.lua
@@ -31,6 +31,8 @@ local load = load
local setfenv = setfenv
local gc = collectgarbage
local unpack = unpack
+local xpcall = xpcall
+local traceback = debug.traceback
local function set_limits(ltab)
local count = ltab.count
@@ -162,6 +164,14 @@ local function run()
return fn(comms._wait)
end
+local function wrapper_run()
+ local ok, retcode = xpcall(run, traceback)
+ if not ok then
+ error(retcode)
+ end
+ return retcode
+end
+
return {
- run = run,
+ run = wrapper_run,
}