diff options
author | fonsinchen <fonsinchen@openttd.org> | 2013-07-30 19:03:56 +0000 |
---|---|---|
committer | fonsinchen <fonsinchen@openttd.org> | 2013-07-30 19:03:56 +0000 |
commit | ca1c79214475c5d3acc0f69fb70b44347dc29b57 (patch) | |
tree | dfb014867c9858b67c645f64b48f8de26e06b447 | |
parent | 456627e01c4c4ba13aaecc6e194a8628bbd26a85 (diff) | |
download | openttd-ca1c79214475c5d3acc0f69fb70b44347dc29b57.tar.xz |
(svn r25637) -Fix: don't keep minimal routing information if automatic distribution has been disabled
-rw-r--r-- | src/linkgraph/linkgraphjob.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/linkgraph/linkgraphjob.cpp b/src/linkgraph/linkgraphjob.cpp index 4f583e04a..dcdc7ba36 100644 --- a/src/linkgraph/linkgraphjob.cpp +++ b/src/linkgraph/linkgraphjob.cpp @@ -74,14 +74,21 @@ LinkGraphJob::~LinkGraphJob() /* Swap shares and invalidate ones that are completely deleted. Don't * really delete them as we could then end up with unroutable cargo - * somewhere. */ - for (FlowStatMap::iterator it(ge.flows.begin()); it != ge.flows.end(); ++it) { + * somewhere. Do delete them if automatic distribution has been turned + * off for that cargo, though. */ + for (FlowStatMap::iterator it(ge.flows.begin()); it != ge.flows.end();) { FlowStatMap::iterator new_it = flows.find(it->first); if (new_it == flows.end()) { - it->second.Invalidate(); + if (_settings_game.linkgraph.GetDistributionType(this->Cargo()) != DT_MANUAL) { + it->second.Invalidate(); + ++it; + } else { + ge.flows.erase(it++); + } } else { it->second.SwapShares(new_it->second); flows.erase(new_it); + ++it; } } ge.flows.insert(flows.begin(), flows.end()); |