mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 10:30:28 +00:00
(svn r25910) -Fix: Guard against empty FlowStats in a few more places.
This commit is contained in:
parent
b5dd83e84f
commit
f528d2c592
@ -478,7 +478,7 @@ bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationID
|
|||||||
FlowStat new_shares = flow_it->second;
|
FlowStat new_shares = flow_it->second;
|
||||||
new_shares.ChangeShare(current_station, INT_MIN);
|
new_shares.ChangeShare(current_station, INT_MIN);
|
||||||
StationIDStack excluded = next_station;
|
StationIDStack excluded = next_station;
|
||||||
while (!excluded.IsEmpty()) {
|
while (!excluded.IsEmpty() && !new_shares.GetShares()->empty()) {
|
||||||
new_shares.ChangeShare(excluded.Pop(), INT_MIN);
|
new_shares.ChangeShare(excluded.Pop(), INT_MIN);
|
||||||
}
|
}
|
||||||
if (new_shares.GetShares()->empty()) {
|
if (new_shares.GetShares()->empty()) {
|
||||||
|
@ -4228,6 +4228,7 @@ void FlowStat::ChangeShare(StationID st, int flow)
|
|||||||
*/
|
*/
|
||||||
void FlowStat::RestrictShare(StationID st)
|
void FlowStat::RestrictShare(StationID st)
|
||||||
{
|
{
|
||||||
|
assert(!this->shares.empty());
|
||||||
uint flow = 0;
|
uint flow = 0;
|
||||||
uint last_share = 0;
|
uint last_share = 0;
|
||||||
SharesMap new_shares;
|
SharesMap new_shares;
|
||||||
@ -4248,6 +4249,7 @@ void FlowStat::RestrictShare(StationID st)
|
|||||||
if (flow == 0) return;
|
if (flow == 0) return;
|
||||||
new_shares[last_share + flow] = st;
|
new_shares[last_share + flow] = st;
|
||||||
this->shares.swap(new_shares);
|
this->shares.swap(new_shares);
|
||||||
|
assert(!this->shares.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -4257,6 +4259,7 @@ void FlowStat::RestrictShare(StationID st)
|
|||||||
*/
|
*/
|
||||||
void FlowStat::ReleaseShare(StationID st)
|
void FlowStat::ReleaseShare(StationID st)
|
||||||
{
|
{
|
||||||
|
assert(!this->shares.empty());
|
||||||
uint flow = 0;
|
uint flow = 0;
|
||||||
uint next_share = 0;
|
uint next_share = 0;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
@ -4283,6 +4286,7 @@ void FlowStat::ReleaseShare(StationID st)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->shares.swap(new_shares);
|
this->shares.swap(new_shares);
|
||||||
|
assert(!this->shares.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user