diff --git a/src/map.cpp b/src/map.cpp
index 38a700e3c9f6ee06c06cef454328da8bd01ced8f..76a558d43cebf90f90ae8fd02714ffe61c1d2ac2 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -1499,8 +1499,8 @@ void Map::timerUpdate(float dtime, float unload_timeout, u32 max_loaded_blocks,
 		}
 		block_count_all = mapblock_queue.size();
 		// Delete old blocks, and blocks over the limit from the memory
-		while (mapblock_queue.size() > max_loaded_blocks
-				|| mapblock_queue.top().block->getUsageTimer() > unload_timeout) {
+		while (!mapblock_queue.empty() && (mapblock_queue.size() > max_loaded_blocks
+				|| mapblock_queue.top().block->getUsageTimer() > unload_timeout)) {
 			TimeOrderedMapBlock b = mapblock_queue.top();
 			mapblock_queue.pop();