1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-27 16:39:09 +00:00

(svn r19318) -Fix [FS#3661](r19198): crash when building an airport at a station where a plane was headed

This commit is contained in:
yexo
2010-03-05 19:19:29 +00:00
parent c4cf153c52
commit 0bfd06245b

View File

@@ -2162,15 +2162,6 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
st->rect.BeforeAddRect(tile, w, h, StationRect::ADD_TRY);
/* if airport was demolished while planes were en-route to it, the
* positions can no longer be the same (v->u.air.pos), since different
* airports have different indexes. So update all planes en-route to this
* airport. Only update if
* 1. airport is upgraded
* 2. airport is added to existing station (unfortunately unavoideable)
*/
if (airport_upgrade) UpdateAirplanesOnNewStation(st);
const AirportTileTable *it = as->table[0];
do {
TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
@@ -2188,6 +2179,15 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
AirportTileAnimationTrigger(st, cur_tile, AAT_BUILT);
} while ((++it)->ti.x != -0x80);
/* if airport was demolished while planes were en-route to it, the
* positions can no longer be the same (v->u.air.pos), since different
* airports have different indexes. So update all planes en-route to this
* airport. Only update if
* 1. airport is upgraded
* 2. airport is added to existing station (unfortunately unavoideable)
*/
if (airport_upgrade) UpdateAirplanesOnNewStation(st);
st->UpdateVirtCoord();
UpdateStationAcceptance(st, false);
st->RecomputeIndustriesNear();