From f035353b1b4ebf073ab75567a8ddc32f9d65598b Mon Sep 17 00:00:00 2001 From: entuland Date: Mon, 13 May 2019 15:54:14 +0200 Subject: [PATCH 1/2] use table.copy to ensure all the data gets copied over --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 4f55ba4..4b7b2c0 100644 --- a/init.lua +++ b/init.lua @@ -559,7 +559,7 @@ rhotator.check_on_rotate_handler = function(pos, node, nodedef, player, click, n return false elseif nodedef.on_rotate then -- Copy pos and node because callback can modify it - local pass_node = {name = node.name, param1 = node.param1, param2 = node.param2} + local pass_node = table.copy(node) local pass_pos = vector.new(pos) local result = nodedef.on_rotate(pass_pos, pass_node, player, click, new_param2) if result == true then From 383106dbc36ad8151ec50b5adfc6dffed156d6e9 Mon Sep 17 00:00:00 2001 From: entuland Date: Mon, 13 May 2019 15:55:03 +0200 Subject: [PATCH 2/2] safeguard checks to avoid calling nil methods or operating on nil objects --- notify.lua | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/notify.lua b/notify.lua index 945ab92..bf546bb 100644 --- a/notify.lua +++ b/notify.lua @@ -20,7 +20,9 @@ local function hud_remove(player, playername) if os.time() < hud_timeout_seconds + hud.time then return end - player:hud_remove(hud.id) + if player and player.hud_remove then + player:hud_remove(hud.id) + end huds[playername] = nil end @@ -36,11 +38,13 @@ local function hud_create(player, message, params) def.text = message or def.text def.hud_elem_type = def.hud_elem_type or "text" def.name = mod_name .. "_feedback" - local id = player:hud_add(def) - huds[playername] = { - id = id, - time = os.time(), - } + if player and player.hud_add then + local id = player:hud_add(def) + huds[playername] = { + id = id, + time = os.time(), + } + end end notify.warn = function(player, message) @@ -67,7 +71,7 @@ notify.__call = function(self, player, message, params) end message = "[" .. mod_name .. "] " .. message local hud = huds[playername] - if hud then + if hud and player.hud_remove then player:hud_remove(hud.id) end hud_create(player, message, params)