diff options
author | rubidium <rubidium@openttd.org> | 2009-09-08 12:22:28 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-09-08 12:22:28 +0000 |
commit | 535f71fc13ced5ed1f68886fcd5aebb47d35f53c (patch) | |
tree | 834452b0ed760e0c1dc920bffbdf727607ee650a /src | |
parent | dcd6b2096d0b8ecd1d9b95d56a8183e6bd604de6 (diff) | |
download | openttd-535f71fc13ced5ed1f68886fcd5aebb47d35f53c.tar.xz |
(svn r17472) -Fix [FS#3182]: industry list was rebuilt too early during industry removal causing the removed industry to be still in the list after removal
Diffstat (limited to 'src')
-rw-r--r-- | src/industry.h | 1 | ||||
-rw-r--r-- | src/industry_cmd.cpp | 10 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/industry.h b/src/industry.h index 32f403f96..76a41d486 100644 --- a/src/industry.h +++ b/src/industry.h @@ -84,6 +84,7 @@ struct Industry : IndustryPool::PoolItem<&_industry_pool> { } static Industry *GetRandom(); + static void PostDestructor(size_t index); }; void PlantRandomFarmField(const Industry *i); diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp index 584a7e87e..05e9cb1b7 100644 --- a/src/industry_cmd.cpp +++ b/src/industry_cmd.cpp @@ -176,10 +176,18 @@ Industry::~Industry() DeleteIndustryNews(this->index); DeleteWindowById(WC_INDUSTRY_VIEW, this->index); - InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 0); DeleteSubsidyWith(ST_INDUSTRY, this->index); CargoPacket::InvalidateAllFrom(ST_INDUSTRY, this->index); +} + +/** + * Invalidating some stuff after removing item from the pool. + * @param index index of deleted item + */ +void Industry::PostDestructor(size_t index) +{ + InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 0); Station::RecomputeIndustriesNearForAll(); } |