diff --git a/src/main/resources/assets/opencomputers/loot/OpenOS/bin/sh.lua b/src/main/resources/assets/opencomputers/loot/OpenOS/bin/sh.lua index 33bae3e3f..c4639b1d6 100644 --- a/src/main/resources/assets/opencomputers/loot/OpenOS/bin/sh.lua +++ b/src/main/resources/assets/opencomputers/loot/OpenOS/bin/sh.lua @@ -115,12 +115,11 @@ local function execute(env, command, ...) end table.insert(args, 1, true) args.n = #args - local thread, reason = process.load(shell.resolve(program, "lua"), env, nil, command) + local thread, reason = process.load(program, env, nil, command) if not thread then return false, reason - else - os.setenv ( '_', shell.resolve (program, "lua") ) end + os.setenv("_", program) local result = nil -- Emulate CC behavior by making yields a filtered event.pull() while args[1] and coroutine.status(thread) ~= "dead" do diff --git a/src/main/scala/li/cil/oc/server/component/machine/Machine.scala b/src/main/scala/li/cil/oc/server/component/machine/Machine.scala index 40691b85e..63b88906a 100644 --- a/src/main/scala/li/cil/oc/server/component/machine/Machine.scala +++ b/src/main/scala/li/cil/oc/server/component/machine/Machine.scala @@ -721,6 +721,9 @@ class Machine(val owner: Owner, constructor: Constructor[_ <: Architecture]) ext private def switchTo(value: Machine.State.Value) = { val result = state.pop() + if (value == Machine.State.Stopping || value == Machine.State.Restarting) { + state.clear() + } state.push(value) if (value == Machine.State.Yielded || value == Machine.State.SynchronizedReturn) { remainIdle = 0