summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/linkgraph/linkgraphjob.cpp13
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());