summaryrefslogtreecommitdiff
path: root/saveload.c
diff options
context:
space:
mode:
authortruelight <truelight@openttd.org>2005-02-04 13:23:29 +0000
committertruelight <truelight@openttd.org>2005-02-04 13:23:29 +0000
commit42f98c7eec8cd46ea8452911fb4381f209de342f (patch)
tree512961ac36580ababc52512c67235f48f4bef8c8 /saveload.c
parent88ebe22d8b6e844b501688673f71db3505ea2b57 (diff)
downloadopenttd-42f98c7eec8cd46ea8452911fb4381f209de342f.tar.xz
(svn r1783) -Add: Dynamic vehicles (now up to 64k of vehicles)
Diffstat (limited to 'saveload.c')
-rw-r--r--saveload.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/saveload.c b/saveload.c
index 174d65703..66ac65af7 100644
--- a/saveload.c
+++ b/saveload.c
@@ -942,7 +942,11 @@ static void *IntToReference(uint r, uint t)
switch (t) {
case REF_ORDER: return GetOrder(r - 1);
- case REF_VEHICLE: return GetVehicle(r - 1);
+ case REF_VEHICLE: {
+ if (!AddBlockIfNeeded(&_vehicle_pool, r - 1))
+ error("Vehicles: failed loading savegame: too many vehicles");
+ return GetVehicle(r - 1);
+ }
case REF_STATION: {
if (!AddBlockIfNeeded(&_station_pool, r - 1))
error("Stations: failed loading savegame: too many stations");
@@ -962,6 +966,9 @@ static void *IntToReference(uint r, uint t)
and the index was not - 1.. correct for this */
if (r == INVALID_VEHICLE)
return NULL;
+
+ if (!AddBlockIfNeeded(&_vehicle_pool, r))
+ error("Vehicles: failed loading savegame: too many vehicles");
return GetVehicle(r);
}
default: