summaryrefslogtreecommitdiff
path: root/saveload.c
diff options
context:
space:
mode:
Diffstat (limited to 'saveload.c')
-rw-r--r--saveload.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/saveload.c b/saveload.c
index 71596a883..ef621afcd 100644
--- a/saveload.c
+++ b/saveload.c
@@ -917,10 +917,7 @@ static uint ReferenceToInt(void *v, uint t)
case REF_STATION: return ((Station *)v)->index + 1;
case REF_TOWN: return ((Town *)v)->index + 1;
case REF_ORDER: return ((Order *)v)->index + 1;
-
- case REF_ROADSTOPS:
- //return ((byte*)v - (byte*)_roadstops) / sizeof(_roadstops[0]) + 1;
- return (RoadStop *)v - _roadstops + 1;
+ case REF_ROADSTOPS: return ((RoadStop *)v)->index + 1;
default:
NOT_REACHED();
@@ -957,10 +954,12 @@ static void *IntToReference(uint r, uint t)
error("Towns: failed loading savegame: too many towns");
return GetTown(r - 1);
}
+ case REF_ROADSTOPS: {
+ if (!AddBlockIfNeeded(&_roadstop_pool, r - 1))
+ error("RoadStop: failed loading savegame: too many RoadStops");
+ return GetRoadStop(r - 1);
+ }
- case REF_ROADSTOPS:
- //return (byte*)_roadstops + (r - 1) * sizeof(_roadstops[0]);
- return &_roadstops[r - 1];
case REF_VEHICLE_OLD: {
/* Old vehicles were saved differently: invalid vehicle was 0xFFFF,
and the index was not - 1.. correct for this */