diff --git a/build.properties b/build.properties index 0f1040eaa6..8fdae6df36 100644 --- a/build.properties +++ b/build.properties @@ -5,7 +5,7 @@ forge.version=14.23.5.2860 mod.name=OpenComputers mod.group=li.cil.oc -mod.version=1.8.6-snapshot +mod.version=1.8.7-snapshot ae2.version=rv6-stable-7 buildcraft.version=7.99.24.8 diff --git a/changelog.md b/changelog.md index 0ef527973e..d70fc16d63 100644 --- a/changelog.md +++ b/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. +* [#3726] Fix missing tooltip on Power Converter. +* [#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 + +* [#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, HfSr, Timothé GRISOT diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua index f60e8155cc..61496667a1 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/core/boot.lua @@ -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 diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/process.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/process.lua index 49f0848fd2..be4ad3e581 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/process.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/process.lua @@ -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