summaryrefslogtreecommitdiff
path: root/src/vehiclelist.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2010-04-17 14:47:56 +0000
committerfrosch <frosch@openttd.org>2010-04-17 14:47:56 +0000
commit5ecf2f7f8cb157d959c42b3396398f03d3f3fffb (patch)
tree28e2ecc16925389891a8adb0a05806f6f56e661c /src/vehiclelist.cpp
parent2a5ddd0daea6e20c2c3de9e46ee0a0fe9973b502 (diff)
downloadopenttd-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.cpp11
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;
}