diff options
author | fonsinchen <fonsinchen@openttd.org> | 2013-10-23 19:04:06 +0000 |
---|---|---|
committer | fonsinchen <fonsinchen@openttd.org> | 2013-10-23 19:04:06 +0000 |
commit | f528d2c59246cb76c5d84dfac04e84e1368ea650 (patch) | |
tree | 40eba275e45bb75a02c6b9ca026755f7707eb4b4 | |
parent | b5dd83e84f355eedbfc78838c0961864cd7a8fb1 (diff) | |
download | openttd-f528d2c59246cb76c5d84dfac04e84e1368ea650.tar.xz |
(svn r25910) -Fix: Guard against empty FlowStats in a few more places.
-rw-r--r-- | src/cargopacket.cpp | 2 | ||||
-rw-r--r-- | src/station_cmd.cpp | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index 3820d8c77..54cc9b7f7 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -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()) { diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 423907a8f..ca0c0be05 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -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()); } /** |