Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/threads-ffi.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSoumith Chintala <soumith@gmail.com>2015-09-18 21:31:46 +0300
committerSoumith Chintala <soumith@gmail.com>2015-09-18 21:31:46 +0300
commit7c5ff00fa98825cd477eb767fb7dc0832592f61c (patch)
tree6243ba6242bf52bfaf1fe7b192c54b269285aaca
parent1153921a624523ebfd11096b384ae193e83bc1cd (diff)
parentbad65805d5fca7d81f3e4e0062ac95915f556179 (diff)
Merge pull request #27 from adamlerer/tb_return
Fix return values with xpcall
-rw-r--r--test/test-traceback.lua9
-rw-r--r--threads.lua4
2 files changed, 11 insertions, 2 deletions
diff --git a/test/test-traceback.lua b/test/test-traceback.lua
index db50624..98bb815 100644
--- a/test/test-traceback.lua
+++ b/test/test-traceback.lua
@@ -17,3 +17,12 @@ my_threads:addjob(function()
ok, res = pcall(my_threads.synchronize, my_threads)
assert(ok == false)
assert(res:find("in function 'evil_func'"))
+
+my_threads:addjob(function()
+ return 10
+ end,
+ function(x)
+ assert(x == 10)
+ end)
+
+my_threads:synchronize()
diff --git a/threads.lua b/threads.lua
index 3bef540..67145f2 100644
--- a/threads.lua
+++ b/threads.lua
@@ -169,7 +169,7 @@ function Threads:dojob()
local callstatus, args, endcallbackid, threadid = self.mainqueue:dojob()
if callstatus then
local endcallstatus, msg = xpcall(
- function() endcallbacks[endcallbackid](_unpack(args)) end,
+ function() return endcallbacks[endcallbackid](_unpack(args)) end,
debug.traceback)
if not endcallstatus then
table.insert(self.errors, string.format('[thread %d endcallback] %s', threadid, msg))
@@ -231,7 +231,7 @@ function Threads:addjob(...) -- endcallback is passed with returned values of ca
xpcall(
function()
local _unpack = unpack or table.unpack
- callback(_unpack(args))
+ return callback(_unpack(args))
end,
debug.traceback)}
local status = table.remove(res, 1)