summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cargopacket.cpp2
-rw-r--r--src/station_cmd.cpp4
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());
}
/**