diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index 3820d8c772..54cc9b7f7d 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 423907a8f8..ca0c0be05a 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()); } /**