From 6593e4490a4175e3b533e6686a4d1e4131668b9e Mon Sep 17 00:00:00 2001 From: rubidium Date: Mon, 7 Sep 2009 08:05:35 +0000 Subject: (svn r17442) -Fix [FS#3180]: destruction of depots didn't remove any vehicle lists related to the depot, causing windows pointing to deleted depots and (thus) crashes --- src/depot.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/depot.cpp b/src/depot.cpp index fe8635586..8bfe52a3e 100644 --- a/src/depot.cpp +++ b/src/depot.cpp @@ -18,6 +18,7 @@ #include "tile_map.h" #include "water_map.h" #include "core/pool_func.hpp" +#include "vehicle_gui.h" DepotPool _depot_pool("Depot"); INSTANTIATE_POOL_METHODS(Depot) @@ -57,6 +58,15 @@ Depot::~Depot() /* Delete the depot-window */ DeleteWindowById(WC_VEHICLE_DEPOT, this->xy); + + /* Delete the depot list */ + WindowNumber wno = (this->index << 16) | VLW_DEPOT_LIST | GetTileOwner(this->xy); + switch (GetTileType(this->xy)) { + default: NOT_REACHED(); + case MP_RAILWAY: DeleteWindowById(WC_TRAINS_LIST, wno | (VEH_TRAIN << 11)); break; + case MP_ROAD: DeleteWindowById(WC_ROADVEH_LIST, wno | (VEH_ROAD << 11)); break; + case MP_WATER: DeleteWindowById(WC_SHIPS_LIST, wno | (VEH_SHIP << 11)); break; + } } void InitializeDepots() -- cgit v1.2.3-54-g00ecf