From d23e3a2fa29b71e39a908c605cb8c053b1dcb67c Mon Sep 17 00:00:00 2001 From: peter1138 Date: Sun, 7 May 2006 12:58:45 +0000 Subject: [PATCH] (svn r4772) - Newstations: when allocating a custom station (via action 0x03) check if the station has already been allocated. (Fixes duplicate waypoints in newstatsw in non-temperate climate) --- newgrf_station.c | 4 ++++ newgrf_station.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/newgrf_station.c b/newgrf_station.c index cb02b9b2ff..2b699e2171 100644 --- a/newgrf_station.c +++ b/newgrf_station.c @@ -137,6 +137,9 @@ void SetCustomStationSpec(StationSpec *statspec) StationClass *station_class; int i; + /* If the station has already been allocated, don't reallocate it. */ + if (statspec->allocated) return; + assert(statspec->sclass < STAT_CLASS_MAX); station_class = &station_classes[statspec->sclass]; @@ -144,6 +147,7 @@ void SetCustomStationSpec(StationSpec *statspec) station_class->spec = realloc(station_class->spec, station_class->stations * sizeof(*station_class->spec)); station_class->spec[i] = statspec; + statspec->allocated = true; } /** diff --git a/newgrf_station.h b/newgrf_station.h index 8e01c4923c..b7ec6063e8 100644 --- a/newgrf_station.h +++ b/newgrf_station.h @@ -21,6 +21,8 @@ typedef struct StationSpec { uint32 grfid; ///< ID of GRF file station belongs to. int localidx; ///< Index within GRF file of station. + bool allocated; ///< Flag whether this station has been added to a station class list + StationClassID sclass; ///< The class to which this spec belongs. StringID name; ///< Name of this station.