From 981b871d2f2a30c5624c5ffc439e13b7995b1bc9 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Wed, 25 Nov 2015 21:49:27 +0100 Subject: Tools/MMapGenerator: Fix an edge case of infinite loop Fix a (pseudo) infinite loop happening when generating mmaps for single tile maps (like 249) but with vmaps not present in the correct folder. This would trigger a 18446744065119600000 (uint32 max ^ 2) iterations loop. --- src/tools/mmaps_generator/MapBuilder.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/tools/mmaps_generator/MapBuilder.cpp b/src/tools/mmaps_generator/MapBuilder.cpp index ff2f72f3534..0c41be65cf7 100644 --- a/src/tools/mmaps_generator/MapBuilder.cpp +++ b/src/tools/mmaps_generator/MapBuilder.cpp @@ -215,10 +215,12 @@ namespace MMAP /**************************************************************************/ void MapBuilder::getGridBounds(uint32 mapID, uint32 &minX, uint32 &minY, uint32 &maxX, uint32 &maxY) const { - maxX = std::numeric_limits::max(); - maxY = std::numeric_limits::max(); - minX = 0; - minY = 0; + // min and max are initialized to invalid values so the caller iterating the [min, max] range + // will never enter the loop unless valid min/max values are found + maxX = 0; + maxY = 0; + minX = std::numeric_limits::max(); + minY = std::numeric_limits::max(); float bmin[3] = { 0, 0, 0 }; float bmax[3] = { 0, 0, 0 }; -- cgit v1.2.3