Changeset - r7420:9706ae234622
[Not reviewed]
master
0 2 0
rubidium - 17 years ago 2007-08-06 14:08:25
rubidium@openttd.org
(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.
2 files changed with 4 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/industry_cmd.cpp
Show inline comments
 
@@ -127,12 +127,14 @@ const IndustryTileSpec *GetIndustryTileS
 
	}
 
	return its;
 
}
 

	
 
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) {
 
		this->xy = 0;
 
		return;
 
	}
src/station.cpp
Show inline comments
 
@@ -388,12 +388,14 @@ RoadStop::RoadStop(TileIndex tile) :
 

	
 
/** De-Initializes a RoadStops. This includes clearing all slots that vehicles might
 
  * have and unlinks it from the linked list of road stops at the given station
 
  */
 
RoadStop::~RoadStop()
 
{
 
	if (CleaningPool()) return;
 

	
 
	/* Clear the slot assignment of all vehicles heading for this road stop */
 
	if (num_vehicles != 0) {
 
		Vehicle *v;
 

	
 
		FOR_ALL_VEHICLES(v) {
 
			if (v->type == VEH_ROAD && v->u.road.slot == this) ClearSlot(v);
0 comments (0 inline, 0 general)