summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-09-08 12:22:28 +0000
committerrubidium <rubidium@openttd.org>2009-09-08 12:22:28 +0000
commit535f71fc13ced5ed1f68886fcd5aebb47d35f53c (patch)
tree834452b0ed760e0c1dc920bffbdf727607ee650a /src
parentdcd6b2096d0b8ecd1d9b95d56a8183e6bd604de6 (diff)
downloadopenttd-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.h1
-rw-r--r--src/industry_cmd.cpp10
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();
}