# HG changeset patch # User frosch # Date 1266869296 0 # Node ID 31e99b467d35ccb2a1bfabafabdc0d40ef65f2fb # Parent a13fe04c7234be1cdeebde01ab068fe8e6ddfb01 (svn r19210) -Fix: GetDestination() is invalid for nearest-depot orders. diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -415,7 +415,9 @@ default: NOT_REACHED(); case OT_GOTO_WAYPOINT: return Waypoint::Get(o.GetDestination())->xy; case OT_GOTO_STATION: return Station::Get(o.GetDestination())->xy; - case OT_GOTO_DEPOT: return Depot::Get(o.GetDestination())->xy; + case OT_GOTO_DEPOT: + if ((o.GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) return INVALID_TILE; + return Depot::Get(o.GetDestination())->xy; } } @@ -433,7 +435,10 @@ return max(dist1, dist2); } - return DistanceManhattan(GetOrderLocation(*prev), GetOrderLocation(*cur)); + TileIndex prev_tile = GetOrderLocation(*prev); + TileIndex cur_tile = GetOrderLocation(*cur); + if (prev_tile == INVALID_TILE || cur_tile == INVALID_TILE) return 0; + return DistanceManhattan(prev_tile, cur_tile); } /** Add an order to the orderlist of a vehicle.