From 8621e6de5dc031b547739ab3ff8dc1575a284d1b Mon Sep 17 00:00:00 2001
From: Craig Robbins <kde.psych@gmail.com>
Date: Mon, 22 Dec 2014 01:37:45 +1000
Subject: [PATCH] Large increase in performance

---
 src/mapnode.h | 15 +++++++--------
 src/voxel.cpp |  4 +++-
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/mapnode.h b/src/mapnode.h
index 349739be7..e67724ec1 100644
--- a/src/mapnode.h
+++ b/src/mapnode.h
@@ -143,14 +143,13 @@ struct MapNode
 	{
 		*this = n;
 	}
-	
-	MapNode(content_t content=CONTENT_AIR, u8 a_param1=0, u8 a_param2=0)
-	{
-		param0 = content;
-		param1 = a_param1;
-		param2 = a_param2;
-	}
-	
+
+	MapNode(content_t content = CONTENT_AIR, u8 a_param1=0, u8 a_param2=0)
+		: param0(content),
+		  param1(a_param1),
+		  param2(a_param2)
+	{ }
+
 	// Create directly from a nodename
 	// If name is unknown, sets CONTENT_IGNORE
 	MapNode(INodeDefManager *ndef, const std::string &name,
diff --git a/src/voxel.cpp b/src/voxel.cpp
index 335ab307c..bd14acb06 100644
--- a/src/voxel.cpp
+++ b/src/voxel.cpp
@@ -180,7 +180,9 @@ void VoxelManipulator::addArea(const VoxelArea &area)
 	dstream<<std::endl;*/
 
 	// Allocate and clear new data
-	MapNode *new_data = new MapNode[new_size];
+	// FIXME: UGLY KLUDGE because MapNode default constructor is FUBAR; it
+	//        initialises data that is going to be overwritten anyway
+	MapNode *new_data = (MapNode*)new char[new_size * sizeof (*new_data)];
 	assert(new_data);
 	u8 *new_flags = new u8[new_size];
 	assert(new_flags);
-- 
GitLab