From d9f9a64389ebe66b2dfa7b16cd66ed463ab2cec7 Mon Sep 17 00:00:00 2001 From: Charles Pigott Date: Sat, 27 Apr 2019 09:59:45 +0100 Subject: Fix #6507: Don't try to load invalid depots from older savegames --- src/saveload/afterload.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/saveload/afterload.cpp') diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index eea896dd7..06cbbd17d 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -2312,6 +2312,14 @@ bool AfterLoadGame() if (IsSavegameVersionBefore(SLV_128)) { const Depot *d; FOR_ALL_DEPOTS(d) { + /* At some point, invalid depots were saved into the game (possibly those removed in the past?) + * Remove them here, so they don't cause issues further down the line */ + if (!IsDepotTile(d->xy)) { + DEBUG(sl, 0, "Removing invalid depot %d at %d, %d", d->index, TileX(d->xy), TileY(d->xy)); + delete d; + d = nullptr; + continue; + } _m[d->xy].m2 = d->index; if (IsTileType(d->xy, MP_WATER)) _m[GetOtherShipDepotTile(d->xy)].m2 = d->index; } -- cgit v1.2.3-70-g09d2