From ab02f0aa1b852391db89a1384f5c7271271196a5 Mon Sep 17 00:00:00 2001
From: Perttu Ahola <celeron55@gmail.com>
Date: Tue, 24 May 2011 20:03:19 +0300
Subject: [PATCH] Added a check that avoids server crash (unhandled exception)
 when map generation is attempted near limit

---
 src/map.cpp | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/map.cpp b/src/map.cpp
index c681a24b7..a49de3c46 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -3586,7 +3586,18 @@ void ServerMap::initChunkMake(ChunkMakeData &data, v2s16 chunkpos)
 			sectorpos_base - v2s16(1,1) * max_spread_amount_sectors;
 	s16 sectorpos_bigbase_size =
 			sectorpos_base_size + 2 * max_spread_amount_sectors;
-			
+	
+	// Check limits
+	const s16 limit = MAP_GENERATION_LIMIT / MAP_BLOCKSIZE;
+	if(sectorpos_bigbase.X < -limit
+	|| sectorpos_bigbase.X + sectorpos_bigbase_size >= limit
+	|| sectorpos_bigbase.Y < -limit
+	|| sectorpos_bigbase.Y + sectorpos_bigbase_size >= limit)
+	{
+		data.no_op = true;
+		return;
+	}
+
 	data.seed = m_seed;
 	data.chunkpos = chunkpos;
 	data.y_blocks_min = y_blocks_min;
-- 
GitLab