summaryrefslogtreecommitdiff
path: root/saveload.c
diff options
context:
space:
mode:
Diffstat (limited to 'saveload.c')
-rw-r--r--saveload.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/saveload.c b/saveload.c
index 54931a2bb..6378ea0ff 100644
--- a/saveload.c
+++ b/saveload.c
@@ -944,7 +944,11 @@ static void *IntToReference(uint r, uint t)
case REF_ORDER: return GetOrder(r - 1);
case REF_VEHICLE: return GetVehicle(r - 1);
case REF_STATION: return GetStation(r - 1);
- case REF_TOWN: return GetTown(r - 1);
+ case REF_TOWN: {
+ if (!AddBlockIfNeeded(&_town_pool, r - 1))
+ error("Towns: failed loading savegame: too many towns");
+ return GetTown(r - 1);
+ }
case REF_ROADSTOPS:
//return (byte*)_roadstops + (r - 1) * sizeof(_roadstops[0]);