diff options
author | smatz <smatz@openttd.org> | 2009-05-23 19:43:09 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2009-05-23 19:43:09 +0000 |
commit | 7854e68b95951979445bb485f1d377a358c6d204 (patch) | |
tree | 287bcea15d830067e7e4fcd842388e7c0151a1b6 /src/economy.cpp | |
parent | 4bf70602a116f957ffdbb599d0de6f92a7df0a28 (diff) | |
download | openttd-7854e68b95951979445bb485f1d377a358c6d204.tar.xz |
(svn r16407) -Fix [FS#2913]: set CargoPacket::source to INVALID_STATION when source station is deleted
Diffstat (limited to 'src/economy.cpp')
-rw-r--r-- | src/economy.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/economy.cpp b/src/economy.cpp index 90732b78b..b31c3dc59 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -1016,9 +1016,7 @@ static void DeliverGoodsToIndustry(const Station *st, CargoID cargo_type, int nu */ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID source, StationID dest, TileIndex source_tile, byte days_in_transit, SmallIndustryList *industry_set) { - bool subsidised; - Station *s_from, *s_to; - Money profit; + bool subsidised = false; assert(num_pieces > 0); @@ -1029,12 +1027,14 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID source, SetBit(c->cargo_types, cargo_type); } - /* Get station pointers. */ - s_from = Station::Get(source); - s_to = Station::Get(dest); + const Station *s_to = Station::Get(dest); - /* Check if a subsidy applies. */ - subsidised = CheckSubsidised(s_from, s_to, cargo_type); + if (source != INVALID_STATION) { + const Station *s_from = Station::Get(source); + + /* Check if a subsidy applies. */ + subsidised = CheckSubsidised(s_from, s_to, cargo_type); + } /* Increase town's counter for some special goods types */ const CargoSpec *cs = GetCargo(cargo_type); @@ -1045,7 +1045,7 @@ static Money DeliverGoods(int num_pieces, CargoID cargo_type, StationID source, DeliverGoodsToIndustry(s_to, cargo_type, num_pieces, industry_set); /* Determine profit */ - profit = GetTransportedGoodsIncome(num_pieces, DistanceManhattan(source_tile, s_to->xy), days_in_transit, cargo_type); + Money profit = GetTransportedGoodsIncome(num_pieces, DistanceManhattan(source_tile, s_to->xy), days_in_transit, cargo_type); /* Modify profit if a subsidy is in effect */ if (subsidised) { |