(svn r25910) -Fix: Guard against empty FlowStats in a few more places.

This commit is contained in:
fonsinchen 2013-10-23 19:04:06 +00:00
parent b5dd83e84f
commit f528d2c592
2 changed files with 5 additions and 1 deletions

View File

@ -478,7 +478,7 @@ bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationID
FlowStat new_shares = flow_it->second;
new_shares.ChangeShare(current_station, INT_MIN);
StationIDStack excluded = next_station;
while (!excluded.IsEmpty()) {
while (!excluded.IsEmpty() && !new_shares.GetShares()->empty()) {
new_shares.ChangeShare(excluded.Pop(), INT_MIN);
}
if (new_shares.GetShares()->empty()) {

View File

@ -4228,6 +4228,7 @@ void FlowStat::ChangeShare(StationID st, int flow)
*/
void FlowStat::RestrictShare(StationID st)
{
assert(!this->shares.empty());
uint flow = 0;
uint last_share = 0;
SharesMap new_shares;
@ -4248,6 +4249,7 @@ void FlowStat::RestrictShare(StationID st)
if (flow == 0) return;
new_shares[last_share + flow] = st;
this->shares.swap(new_shares);
assert(!this->shares.empty());
}
/**
@ -4257,6 +4259,7 @@ void FlowStat::RestrictShare(StationID st)
*/
void FlowStat::ReleaseShare(StationID st)
{
assert(!this->shares.empty());
uint flow = 0;
uint next_share = 0;
bool found = false;
@ -4283,6 +4286,7 @@ void FlowStat::ReleaseShare(StationID st)
}
}
this->shares.swap(new_shares);
assert(!this->shares.empty());
}
/**