(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)
This commit is contained in:
		| @@ -137,6 +137,9 @@ void SetCustomStationSpec(StationSpec *statspec) | |||||||
| 	StationClass *station_class; | 	StationClass *station_class; | ||||||
| 	int i; | 	int i; | ||||||
|  |  | ||||||
|  | 	/* If the station has already been allocated, don't reallocate it. */ | ||||||
|  | 	if (statspec->allocated) return; | ||||||
|  |  | ||||||
| 	assert(statspec->sclass < STAT_CLASS_MAX); | 	assert(statspec->sclass < STAT_CLASS_MAX); | ||||||
| 	station_class = &station_classes[statspec->sclass]; | 	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 = realloc(station_class->spec, station_class->stations * sizeof(*station_class->spec)); | ||||||
|  |  | ||||||
| 	station_class->spec[i] = statspec; | 	station_class->spec[i] = statspec; | ||||||
|  | 	statspec->allocated = true; | ||||||
| } | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|   | |||||||
| @@ -21,6 +21,8 @@ typedef struct StationSpec { | |||||||
| 	uint32 grfid; ///< ID of GRF file station belongs to. | 	uint32 grfid; ///< ID of GRF file station belongs to. | ||||||
| 	int localidx; ///< Index within GRF file of station. | 	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. | 	StationClassID sclass; ///< The class to which this spec belongs. | ||||||
| 	StringID name; ///< Name of this station. | 	StringID name; ///< Name of this station. | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 peter1138
					peter1138