diff options
author | rubidium <rubidium@openttd.org> | 2007-08-06 14:08:25 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2007-08-06 14:08:25 +0000 |
commit | 341281a7d4fad9d37e2f4c0f68d49cd1b1c7e148 (patch) | |
tree | 5ba1d39c7df66d494e77d76e11f6f85110614d1f | |
parent | 83a04adb71f5802d03a0b815320e1328306862ca (diff) | |
download | openttd-341281a7d4fad9d37e2f4c0f68d49cd1b1c7e148.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.cpp | 2 | ||||
-rw-r--r-- | src/station.cpp | 2 |
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; |