(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; | ||||
| 	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; | ||||
| } | ||||
|  | ||||
| /** | ||||
|   | ||||
| @@ -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. | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 peter1138
					peter1138