changeset 20723:85c60e19b96a draft

(svn r25637) -Fix: don't keep minimal routing information if automatic distribution has been disabled
author fonsinchen <fonsinchen@openttd.org>
date Tue, 30 Jul 2013 19:03:56 +0000
parents 9ebb126ded73
children 329dd9fe332d
files src/linkgraph/linkgraphjob.cpp
diffstat 1 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/linkgraph/linkgraphjob.cpp
+++ b/src/linkgraph/linkgraphjob.cpp
@@ -74,14 +74,21 @@
 
 		/* 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());