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 ebb9b47af..56361ebf7 100644 --- a/src/main/resources/assets/opencomputers/loot/OpenOS/lib/process.lua +++ b/src/main/resources/assets/opencomputers/loot/OpenOS/lib/process.lua @@ -7,7 +7,10 @@ local coroutine_create = coroutine.create local function findProcess(co) co = co or coroutine.running() - for _, process in pairs(running) do + for main, process in pairs(running) do + if main == co then + return process + end for _, instance in pairs(process.instances) do if instance == co then return process @@ -62,7 +65,7 @@ function process.load(path, env, init, name) command = name, env = env, parent = process, - instances = setmetatable({thread}, {__mode="v"}) + instances = setmetatable({}, {__mode="v"}) } return thread end @@ -95,7 +98,7 @@ function process.install(path, name) path = path, command = name, env = _ENV, - instances = setmetatable({thread}, {__mode="v"}) + instances = setmetatable({}, {__mode="v"}) } end diff --git a/src/main/resources/assets/opencomputers/lua/kernel.lua b/src/main/resources/assets/opencomputers/lua/kernel.lua index 77f5b28d6..b619cdda3 100644 --- a/src/main/resources/assets/opencomputers/lua/kernel.lua +++ b/src/main/resources/assets/opencomputers/lua/kernel.lua @@ -469,7 +469,7 @@ end local libcomponent local proxyCache = setmetatable({}, {__mode="v"}) -local proxyDirectCache = setmetatable({}, {__mode="v"}) +local proxyDirectCache = setmetatable({}, {__mode="k"}) local componentCallback = { __call = function(self, ...)