(svn r25963) -Fix [FS#5758]: Mixtures of old and new flows could create cycles.

This commit is contained in:
fonsinchen
2013-11-10 15:18:49 +00:00
parent 9b68e4f864
commit 962d6d7e48
3 changed files with 12 additions and 3 deletions

View File

@@ -4352,18 +4352,23 @@ void FlowStatMap::FinalizeLocalConsumption(StationID self)
/**
* Delete all flows at a station for specific cargo and destination.
* @param via Remote station of flows to be deleted.
* @return IDs of source stations for which the complete FlowStat, not only a
* share, has been erased.
*/
void FlowStatMap::DeleteFlows(StationID via)
StationIDStack FlowStatMap::DeleteFlows(StationID via)
{
StationIDStack ret;
for (FlowStatMap::iterator f_it = this->begin(); f_it != this->end();) {
FlowStat &s_flows = f_it->second;
s_flows.ChangeShare(via, INT_MIN);
if (s_flows.GetShares()->empty()) {
ret.Push(f_it->first);
this->erase(f_it++);
} else {
++f_it;
}
}
return ret;
}
/**