From 647d92c0d56ec496ee45957fcedbd8fae86c5a8b Mon Sep 17 00:00:00 2001 From: fonsinchen Date: Sat, 15 Jun 2013 20:48:50 +0000 Subject: [PATCH] (svn r25419) -Fix: assign some random other source station to packets which have lost their source --- src/cargopacket.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index 2a4c96e82f..e2e7e4e4da 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -450,6 +450,11 @@ bool VehicleCargoList::Stage(bool accepted, StationID current_station, StationID assert((cargo_next != next_station || cargo_next == INVALID_STATION) && cargo_next != current_station); } else { + /* Rewrite an invalid source station to some random other one to + * avoid keeping the cargo in the vehicle forever. */ + if (cp->source == INVALID_STATION && !ge->flows.empty()) { + cp->source = ge->flows.begin()->first; + } cargo_next = ge->GetVia(cp->source); if (cargo_next == INVALID_STATION) { action = (accepted && cp->source != current_station) ? MTA_DELIVER : MTA_KEEP;