(svn r8277) -Fix (r8038): assert on game exit when waypoints were used. The static variable of type Station (inside ComposeWaypointStation) replaced by byte array so no destructor is called for it on exit.
authorKUDr
Fri, 19 Jan 2007 16:01:43 +0000
changeset 5985 e7a55ca9e43d
parent 5984 fbef81292ff9
child 5986 1b9ab9629d36
(svn r8277) -Fix (r8038): assert on game exit when waypoints were used. The static variable of type Station (inside ComposeWaypointStation) replaced by byte array so no destructor is called for it on exit.
src/waypoint.cpp
--- a/src/waypoint.cpp	Fri Jan 19 11:47:48 2007 +0000
+++ b/src/waypoint.cpp	Fri Jan 19 16:01:43 2007 +0000
@@ -353,7 +353,11 @@
 Station *ComposeWaypointStation(TileIndex tile)
 {
 	Waypoint *wp = GetWaypointByTile(tile);
-	static Station stat;
+
+	/* instead of 'static Station stat' use byte array to avoid Station's destructor call upon exit. As
+	 * a side effect, the station is not constructed now. */
+	static byte stat_raw[sizeof Station];
+	static Station &stat = *(Station*)stat_raw;
 
 	stat.train_tile = stat.xy = wp->xy;
 	stat.town = GetTown(wp->town_index);