diff options
Diffstat (limited to 'src/station_cmd.cpp')
-rw-r--r-- | src/station_cmd.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index b9797bdf3..acc036636 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -4065,7 +4065,7 @@ uint FlowStat::GetShare(StationID st) const StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const { assert(!this->shares.empty()); - uint max = (--this->shares.end())->first - 1; + uint max = (--this->shares.end())->first; SharesMap::const_iterator it = this->shares.upper_bound(RandomRange(max)); assert(it != this->shares.end()); if (it->second != excluded && it->second != excluded2) return it->second; @@ -4076,7 +4076,7 @@ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const uint end = it->first; uint begin = (it == this->shares.begin() ? 0 : (--it)->first); uint interval = end - begin; - if (interval > max) return INVALID_STATION; // Only one station in the map. + if (interval >= max) return INVALID_STATION; // Only one station in the map. uint new_max = max - interval; uint rand = RandomRange(new_max); SharesMap::const_iterator it2 = (rand < begin) ? this->shares.upper_bound(rand) : @@ -4090,7 +4090,7 @@ StationID FlowStat::GetVia(StationID excluded, StationID excluded2) const uint end2 = it2->first; uint begin2 = (it2 == this->shares.begin() ? 0 : (--it2)->first); uint interval2 = end2 - begin2; - if (interval2 > new_max) return INVALID_STATION; // Only the two excluded stations in the map. + if (interval2 >= new_max) return INVALID_STATION; // Only the two excluded stations in the map. new_max -= interval2; if (begin > begin2) { Swap(begin, begin2); |