From 985401a23d1581e71f762bdaeadfc19734fdf148 Mon Sep 17 00:00:00 2001
From: Kyle <khonkhortisan@gmail.com>
Date: Fri, 22 Feb 2013 02:14:38 +0100
Subject: [PATCH] Avoid a nil index crash

---
 technic/frames.lua |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/technic/frames.lua b/technic/frames.lua
index efae0e5..f555368 100644
--- a/technic/frames.lua
+++ b/technic/frames.lua
@@ -364,7 +364,6 @@
 		local node=minetest.env:get_node(pos)
 		local meta=minetest.env:get_meta(pos):to_table()
 		nodelist[#(nodelist)+1]={pos=pos,node=node,meta=meta}
-		minetest.env:remove_node(pos)
 	end
 	objects={}
 	for _,pos in ipairs(poslist) do
@@ -374,8 +373,8 @@
 	end
 	for _,obj in ipairs(objects) do
 		obj:setpos(addVect(obj:getpos(),vect))
-		if obj:get_luaentity().name == "pipeworks:tubed_item" then
-			le=obj:get_luaentity()
+		le=obj:get_luaentity()
+		if le and le.name == "pipeworks:tubed_item" then
 			le.start_pos=addVect(le.start_pos,vect)
 		end
 	end
@@ -384,6 +383,15 @@
 		minetest.env:set_node(npos,n.node)
 		local meta=minetest.env:get_meta(npos)
 		meta:from_table(n.meta)
+		for __,pos in ipairs(poslist) do
+			if npos.x==pos.x and npos.y==pos.y and npos.z==pos.z then
+				table.remove(poslist, __)
+				break
+			end
+		end
+	end
+	for __,pos in ipairs(poslist) do
+		minetest.env:remove_node(pos)
 	end
 end
 

--
Gitblit v1.8.0