mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-23 04:24:16 -04:00
sync with upstream (#141)
Co-authored-by: HfSr <96952179+HfSrJun@users.noreply.github.com> Co-authored-by: Timothé GRISOT <timothe.grisot@gmail.com> Co-authored-by: charagarlnad <27380203+charagarlnad@users.noreply.github.com>
This commit is contained in:
parent
54c36ff880
commit
010273c97a
15
changelog.md
15
changelog.md
@ -1,8 +1,17 @@
|
||||
## Fixes/improvements
|
||||
|
||||
* [#3731] Fix string.format() omission in OpenOS package.lua.
|
||||
* [#3735] Fix server hangs on long-lasting HTTP requests.
|
||||
* [#3703] Fix potential packet memory leak.
|
||||
* [#3729] Fix potential crash when opening the manual.
|
||||
* Added a configuration option for network packet TTL. (Timothé GRISOT)
|
||||
* Improved mod load times on certain platforms. (charagarland)
|
||||
* Updated Chinese translation. (HfSr)
|
||||
* Updated Unifont to 16.0.02.
|
||||
|
||||
## OpenOS fixes/improvements
|
||||
|
||||
* [#3714] Fix an OpenOS 1.8.0 regression causing event.pullFiltered() to effectively ignore filter timeouts.
|
||||
* [#3727] Fix an exception handler bug in process.lua, uncovered by fixing recursive xpcall() handling in 1.8.4.
|
||||
|
||||
## List of contributors
|
||||
|
||||
asie, REUSS-dev
|
||||
asie, charagarland, DragDen, HfSr, Timothé GRISOT
|
||||
|
@ -1,7 +1,7 @@
|
||||
-- called from /init.lua
|
||||
local raw_loadfile = ...
|
||||
|
||||
_G._OSVERSION = "OpenOS 1.8.6"
|
||||
_G._OSVERSION = "OpenOS 1.8.7"
|
||||
|
||||
-- luacheck: globals component computer unicode _OSVERSION
|
||||
local component = component
|
||||
|
@ -140,8 +140,13 @@ function event.pullFiltered(...)
|
||||
filter = args[2]
|
||||
end
|
||||
|
||||
local deadline = computer.uptime() + (seconds or math.huge)
|
||||
repeat
|
||||
local signal = table.pack(computer.pullSignal(seconds))
|
||||
local waitTime = deadline - computer.uptime()
|
||||
if waitTime <= 0 then
|
||||
break
|
||||
end
|
||||
local signal = table.pack(computer.pullSignal(waitTime))
|
||||
if signal.n > 0 then
|
||||
if not (seconds or filter) or filter == nil or filter(table.unpack(signal, 1, signal.n)) then
|
||||
return table.unpack(signal, 1, signal.n)
|
||||
|
@ -68,15 +68,19 @@ function process.load(path, env, init, name)
|
||||
if type(msg) == "table" and msg.reason == "terminated" then
|
||||
return msg.code or 0
|
||||
end
|
||||
local stack = debug.traceback():gsub("^([^\n]*\n)[^\n]*\n[^\n]*\n","%1")
|
||||
io.stderr:write(string.format("%s:\n%s", msg or "", stack))
|
||||
return 128 -- syserr
|
||||
return debug.traceback()
|
||||
end, ...)
|
||||
}
|
||||
|
||||
--result[1] is false if the exception handler also crashed
|
||||
if not result[1] and type(result[2]) ~= "number" then
|
||||
io.stderr:write("process library exception handler crashed: ", tostring(result[2]))
|
||||
-- run exception handler
|
||||
xpcall(function()
|
||||
local stack = result[2]:gsub("^([^\n]*\n)[^\n]*\n[^\n]*\n","%1")
|
||||
io.stderr:write(string.format("%s:\n%s", msg or "", stack))
|
||||
end,
|
||||
function(msg)
|
||||
io.stderr:write("process library exception handler crashed: ", tostring(msg))
|
||||
end)
|
||||
end
|
||||
|
||||
-- onError opens a file, you can't open a file without a process, we close the process last
|
||||
|
Loading…
x
Reference in New Issue
Block a user