mirror of https://github.com/OpenTTD/OpenTTD
(svn r7020) -Fix r6047: AI tries to delete stations that are 'in use' because FOR_ALL_STATIONS skips invalid stations
parent
6f74ef3a53
commit
993cb13c8d
|
@ -3555,7 +3555,6 @@ static void AiStateRemoveStation(Player *p)
|
||||||
{
|
{
|
||||||
// Remove stations that aren't in use by any vehicle
|
// Remove stations that aren't in use by any vehicle
|
||||||
byte *in_use;
|
byte *in_use;
|
||||||
const byte *used;
|
|
||||||
const Order *ord;
|
const Order *ord;
|
||||||
const Station *st;
|
const Station *st;
|
||||||
TileIndex tile;
|
TileIndex tile;
|
||||||
|
@ -3571,9 +3570,8 @@ static void AiStateRemoveStation(Player *p)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Go through all stations and delete those that aren't in use
|
// Go through all stations and delete those that aren't in use
|
||||||
used = in_use;
|
|
||||||
FOR_ALL_STATIONS(st) {
|
FOR_ALL_STATIONS(st) {
|
||||||
if (st->owner == _current_player && !*used &&
|
if (st->owner == _current_player && !in_use[st->index] &&
|
||||||
( (st->bus_stops != NULL && (tile = st->bus_stops->xy) != 0) ||
|
( (st->bus_stops != NULL && (tile = st->bus_stops->xy) != 0) ||
|
||||||
(st->truck_stops != NULL && (tile = st->truck_stops->xy)) != 0 ||
|
(st->truck_stops != NULL && (tile = st->truck_stops->xy)) != 0 ||
|
||||||
(tile = st->train_tile) != 0 ||
|
(tile = st->train_tile) != 0 ||
|
||||||
|
@ -3581,7 +3579,6 @@ static void AiStateRemoveStation(Player *p)
|
||||||
(tile = st->airport_tile) != 0)) {
|
(tile = st->airport_tile) != 0)) {
|
||||||
DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||||
}
|
}
|
||||||
used++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
free(in_use);
|
free(in_use);
|
||||||
|
|
Loading…
Reference in New Issue