|
| 1 | +-- luacheck: push compat |
| 2 | +local unpack = table.unpack or unpack |
| 3 | +-- luacheck: pop |
| 4 | + |
1 | 5 | local utils = require "luacheck.utils" |
2 | 6 |
|
3 | 7 | local multithreading = {} |
@@ -90,7 +94,20 @@ function multithreading.pmap(func, array, jobs) |
90 | 94 | local results = {} |
91 | 95 |
|
92 | 96 | for _, worker in ipairs(workers) do |
93 | | - local _, ok, worker_results = assert(worker:join()) |
| 97 | + local join_results = {worker:join()} |
| 98 | + |
| 99 | + -- Manage both new and old lane:join() API formats. |
| 100 | + -- See https://github.com/LuaLanes/lanes/commit/bfdc7a92c4e3e99522abb6d90ef2cbb021f36fc8 |
| 101 | + local ok, worker_results, _ |
| 102 | + if #join_results == 4 then |
| 103 | + -- New API: {true, _, ok, worker_results} |
| 104 | + _, _, ok, worker_results = unpack(join_results) |
| 105 | + elseif #join_results == 3 then |
| 106 | + -- Old API: {true, ok, worker_results} |
| 107 | + _, ok, worker_results = unpack(join_results) |
| 108 | + else |
| 109 | + error("Unexpected lane:join() return format", 0) |
| 110 | + end |
94 | 111 |
|
95 | 112 | if ok then |
96 | 113 | utils.update(results, worker_results) |
|
0 commit comments