summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-08-06 14:08:25 +0000
committerrubidium <rubidium@openttd.org>2007-08-06 14:08:25 +0000
commitab7e36dda704a3ed47ceaf2abb903079d1bea3df (patch)
tree5ba1d39c7df66d494e77d76e11f6f85110614d1f
parente0e361c89044ad5fff5bab6ec289fd13eeb28b2e (diff)
downloadopenttd-ab7e36dda704a3ed47ceaf2abb903079d1bea3df.tar.xz
(svn r10813) -Fix (r10799): some destructors were performing too much during the pool cleanups, which could cause crashes as already removed pool items could then be dereferenced by other destructors.
-rw-r--r--src/industry_cmd.cpp2
-rw-r--r--src/station.cpp2
2 files changed, 4 insertions, 0 deletions
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp
index c46cbac51..a592642dd 100644
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -130,6 +130,8 @@ const IndustryTileSpec *GetIndustryTileSpec(IndustryGfx gfx, bool full_check)
Industry::~Industry()
{
+ if (CleaningPool()) return;
+
/* Industry can also be destroyed when not fully initialized.
* This means that we do not have to clear tiles either. */
if (this->width == 0) {
diff --git a/src/station.cpp b/src/station.cpp
index 150719e8f..fab0395b7 100644
--- a/src/station.cpp
+++ b/src/station.cpp
@@ -391,6 +391,8 @@ RoadStop::RoadStop(TileIndex tile) :
*/
RoadStop::~RoadStop()
{
+ if (CleaningPool()) return;
+
/* Clear the slot assignment of all vehicles heading for this road stop */
if (num_vehicles != 0) {
Vehicle *v;