(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.
authorrubidium
Mon, 06 Aug 2007 14:08:25 +0000
changeset 7420 0e3afa8102f0
parent 7419 531c4851ba85
child 7421 deb7fa2bdebe
(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.
src/industry_cmd.cpp
src/station.cpp
--- a/src/industry_cmd.cpp	Mon Aug 06 13:44:50 2007 +0000
+++ b/src/industry_cmd.cpp	Mon Aug 06 14:08:25 2007 +0000
@@ -130,6 +130,8 @@
 
 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) {
--- a/src/station.cpp	Mon Aug 06 13:44:50 2007 +0000
+++ b/src/station.cpp	Mon Aug 06 14:08:25 2007 +0000
@@ -391,6 +391,8 @@
   */
 RoadStop::~RoadStop()
 {
+	if (CleaningPool()) return;
+
 	/* Clear the slot assignment of all vehicles heading for this road stop */
 	if (num_vehicles != 0) {
 		Vehicle *v;