Update Buildings.cpp

Boundary checks added.
develop
silverflyone 2023-04-04 03:27:32 +10:00
parent f8de51aba3
commit 181f0bdf72
1 changed files with 6 additions and 0 deletions

@ -1635,6 +1635,12 @@ StockpileIterator& StockpileIterator::operator++() {
if (block) { if (block) {
// Check the next item in the current block. // Check the next item in the current block.
++current; ++current;
}
else if (stockpile->x2 < 0 || stockpile->y2 < 0 || stockpile->z < 0 || stockpile->x1 > world->map.x_count - 1 || stockpile->y1 > world->map.y_count - 1 || stockpile->z > world->map.z_count - 1) {
// if the stockpile bounds exist outside of valid map plane then no items can be in the stockpile
block = NULL;
item = NULL;
return *this;
} else { } else {
// Start with the top-left block covering the stockpile. // Start with the top-left block covering the stockpile.
block = Maps::getTileBlock(std::min(std::max(stockpile->x1, 0), world->map.x_count-1), std::min(std::max(stockpile->y1, 0), world->map.y_count-1), stockpile->z); block = Maps::getTileBlock(std::min(std::max(stockpile->x1, 0), world->map.x_count-1), std::min(std::max(stockpile->y1, 0), world->map.y_count-1), stockpile->z);