From c4f9336a2677dcfaa6969d6c471acdb0c4c55f1f Mon Sep 17 00:00:00 2001 From: Oversword Date: Thu, 16 Jun 2022 10:56:49 +0100 Subject: [PATCH] Exit with error if vports do not exist for any reason (#618) Make sure node is registered before attempting to access the vports --- mesecons_luacontroller/init.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mesecons_luacontroller/init.lua b/mesecons_luacontroller/init.lua index 5799f8e..50a6747 100644 --- a/mesecons_luacontroller/init.lua +++ b/mesecons_luacontroller/init.lua @@ -470,7 +470,12 @@ local safe_globals = { local function create_environment(pos, mem, event, itbl, send_warning) -- Gather variables for the environment - local vports = minetest.registered_nodes[minetest.get_node(pos).name].virtual_portstates + local node_def = minetest.registered_nodes[minetest.get_node(pos).name] + if not node_def then return end + + local vports = node_def.virtual_portstates + if not vports then return end + local vports_copy = {} for k, v in pairs(vports) do vports_copy[k] = v end local rports = get_real_port_states(pos) @@ -627,6 +632,7 @@ local function run_inner(pos, code, event) -- Create environment local itbl = {} local env = create_environment(pos, mem, event, itbl, send_warning) + if not env then return false, "Env does not exist. Controller has been moved?" end local success, msg -- Create the sandbox and execute code