From 6415528f968f950cb6b4d6139e336f60a0260515 Mon Sep 17 00:00:00 2001
From: JacobF <queatz@gmail.com>
Date: Tue, 30 Aug 2011 11:38:53 -0400
Subject: [PATCH] If there was no source item in a furnace it would cause a
 segmentation fault.

---
 src/content_nodemeta.cpp | 2 +-
 src/inventory.cpp        | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/content_nodemeta.cpp b/src/content_nodemeta.cpp
index d29eea661..e8f1e197e 100644
--- a/src/content_nodemeta.cpp
+++ b/src/content_nodemeta.cpp
@@ -293,7 +293,7 @@ bool FurnaceNodeMetadata::step(float dtime)
 			If there is no source item or source item is not cookable,
 			or furnace became overloaded, stop loop.
 		*/
-		if((m_fuel_time < m_fuel_totaltime || dst_list->roomForCookedItem(src_item) == false)
+		if((m_fuel_time < m_fuel_totaltime || (src_item && dst_list->roomForCookedItem(src_item) == false))
 			&& (src_item == NULL || m_src_totaltime < 0.001))
 		{
 			m_step_accumulator = 0;
diff --git a/src/inventory.cpp b/src/inventory.cpp
index 62aedb536..116ceeb6d 100644
--- a/src/inventory.cpp
+++ b/src/inventory.cpp
@@ -581,6 +581,8 @@ bool InventoryList::roomForItem(const InventoryItem *item)
 
 bool InventoryList::roomForCookedItem(const InventoryItem *item)
 {
+	if(!item)
+		return false;
 	const InventoryItem *cook = item->createCookResult();
 	if(!cook)
 		return false;
-- 
GitLab