(svn r21939) -Fix (r16357): the check for valid depot wasn't strict enough

This commit is contained in:
smatz
2011-02-02 14:50:57 +00:00
parent 0ebc548a89
commit b15719bbd2
2 changed files with 11 additions and 3 deletions

View File

@@ -108,7 +108,7 @@ static void FixTTDDepots()
{
const Depot *d;
FOR_ALL_DEPOTS_FROM(d, 252) {
if (!IsRoadDepotTile(d->xy) && !IsRailDepotTile(d->xy) && !IsShipDepotTile(d->xy) && !IsHangarTile(d->xy)) {
if (!IsDepotTile(d->xy) || GetDepotIndex(d->xy) != d->index) {
/** Workaround for SVXConverter bug, depots 252-255 could be invalid */
delete d;
}
@@ -670,7 +670,10 @@ static bool LoadOldDepot(LoadgameState *ls, int num)
if (!LoadChunk(ls, d, depot_chunk)) return false;
if (d->xy != 0) {
d->town = Town::Get(RemapTownIndex(_old_town_index));
/* In some cases, there could be depots referencing invalid town. */
Town *t = Town::GetIfValid(RemapTownIndex(_old_town_index));
if (t == NULL) t = Town::GetRandom();
d->town = t;
} else {
delete d;
}