Added a check that avoids server crash (unhandled exception) when map generation...
authorPerttu Ahola <celeron55@gmail.com>
Tue, 24 May 2011 17:03:19 +0000 (20:03 +0300)
committerPerttu Ahola <celeron55@gmail.com>
Tue, 24 May 2011 17:03:19 +0000 (20:03 +0300)
src/map.cpp

index c681a24b7bd6e0da5ecac950ce185eeafe4df16e..a49de3c4600b3dc4c39d6d7096fde1aa6ffd8917 100644 (file)
@@ -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;