From 564bc1179932f5c7b21bc56b4f7aa55e7f121abb Mon Sep 17 00:00:00 2001
From: Joe Julian <me@joejulian.name>
Date: Thu, 11 Jan 2018 11:13:10 -0800
Subject: Create missing tables

After a failure to move the digtron with its metadata, some nodes were
broken. This worked around crashes that occurred if the inventory table
was missing.
---
 nodes/node_duplicator.lua   | 5 ++++-
 nodes/node_item_ejector.lua | 3 +++
 2 files changed, 7 insertions(+), 1 deletion(-)

(limited to 'nodes')

diff --git a/nodes/node_duplicator.lua b/nodes/node_duplicator.lua
index 7d20a65..4533bae 100644
--- a/nodes/node_duplicator.lua
+++ b/nodes/node_duplicator.lua
@@ -146,6 +146,9 @@ minetest.register_node("digtron:duplicator", {
 			-- clear inventories of image's nodes			
 			for _, node_image in pairs(layout.inventories) do
 				local main_inventory = node_image.meta.inventory.main
+				if type(main_inventory) ~= "table" then
+					main_inventory = {}
+				end
 				for index, _ in pairs(main_inventory) do
 					main_inventory[index] = ItemStack(nil)
 				end
@@ -175,4 +178,4 @@ minetest.register_node("digtron:duplicator", {
 		end
 	end,
 
-})
\ No newline at end of file
+})
diff --git a/nodes/node_item_ejector.lua b/nodes/node_item_ejector.lua
index 6f9c64e..aa09909 100644
--- a/nodes/node_item_ejector.lua
+++ b/nodes/node_item_ejector.lua
@@ -67,6 +67,9 @@ local function eject_items(pos, node, player, eject_even_without_pipeworks)
 	local source_index = nil
 	local source_stack = nil
 	for _, node_image in pairs(layout.inventories) do
+		if type(node_image.meta.inventory.main) ~= "table" then
+			node_image.meta.inventory.main = {}
+		end
 		for index, item_stack in pairs(node_image.meta.inventory.main) do
 			if item_stack:get_count() > 0 and not filter_items[item_stack:get_name()] then
 				source_node = node_image
-- 
cgit v1.2.3