Changeset - r17190:635eb980a51d
[Not reviewed]
master
0 2 0
smatz - 14 years ago 2011-02-02 14:50:57
smatz@openttd.org
(svn r21939) -Fix (r16357): the check for valid depot wasn't strict enough
2 files changed with 11 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/depot.cpp
Show inline comments
 
@@ -28,6 +28,11 @@ Depot::~Depot()
 
{
 
	if (CleaningPool()) return;
 

	
 
	if (!IsDepotTile(this->xy) || GetDepotIndex(this->xy) != this->index) {
 
		/* It can happen there is no depot here anymore (TTO/TTD savegames) */
 
		return;
 
	}
 

	
 
	/* Clear the order backup. */
 
	OrderBackup::Reset(this->xy, false);
 

	
 
@@ -40,7 +45,7 @@ Depot::~Depot()
 
	/* Delete the depot list */
 
	VehicleType vt;
 
	switch (GetTileType(this->xy)) {
 
		default: return; // It can happen there is no depot here anymore (TTO/TTD savegames)
 
		default: NOT_REACHED();
 
		case MP_RAILWAY: vt = VEH_TRAIN; break;
 
		case MP_ROAD:    vt = VEH_ROAD;  break;
 
		case MP_WATER:   vt = VEH_SHIP;  break;
src/saveload/oldloader_sl.cpp
Show inline comments
 
@@ -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 *
 
	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;
 
	}
0 comments (0 inline, 0 general)