diff options
author | frosch <frosch@openttd.org> | 2010-04-17 14:47:56 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2010-04-17 14:47:56 +0000 |
commit | 5ecf2f7f8cb157d959c42b3396398f03d3f3fffb (patch) | |
tree | 28e2ecc16925389891a8adb0a05806f6f56e661c /src/vehiclelist.cpp | |
parent | 2a5ddd0daea6e20c2c3de9e46ee0a0fe9973b502 (diff) | |
download | openttd-5ecf2f7f8cb157d959c42b3396398f03d3f3fffb.tar.xz |
(svn r19656) -Codechange/Fix: Report back if invalid vehicle lists are requested.
Diffstat (limited to 'src/vehiclelist.cpp')
-rw-r--r-- | src/vehiclelist.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/vehiclelist.cpp b/src/vehiclelist.cpp index 848fba1a9..ce312ff09 100644 --- a/src/vehiclelist.cpp +++ b/src/vehiclelist.cpp @@ -76,8 +76,9 @@ void BuildDepotVehicleList(VehicleType type, TileIndex tile, VehicleList *engine * <li>VLW_WAYPOINT_LIST: index of waypoint to generate a list for</li> * </ul> * @param window_type The type of window the list is for, using the VLW_ flags in vehicle_gui.h + * @return false if invalid list is requested */ -void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type) +bool GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type) { list->Clear(); @@ -101,7 +102,10 @@ void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, u case VLW_SHARED_ORDERS: /* Add all vehicles from this vehicle's shared order list */ - for (v = Vehicle::Get(index); v != NULL; v = v->NextShared()) { + v = Vehicle::GetIfValid(index); + if (v == NULL || v->type != type || !v->IsPrimaryVehicle()) return false; + + for (; v != NULL; v = v->NextShared()) { *list->Append() = v; } break; @@ -153,8 +157,9 @@ void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, u } break; - default: NOT_REACHED(); + default: return false; } list->Compact(); + return true; } |