summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKUDr <KUDr@openttd.org>2007-01-19 16:01:43 +0000
committerKUDr <KUDr@openttd.org>2007-01-19 16:01:43 +0000
commita2eda30afa72542d702917655e6548b58d55ccba (patch)
tree865b7cdf8fac0a061d05a046d2bd23ae70c66b29
parent81e88a2a7c6bc999a46620906bed02d6b1e02814 (diff)
downloadopenttd-a2eda30afa72542d702917655e6548b58d55ccba.tar.xz
(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.
-rw-r--r--src/waypoint.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/waypoint.cpp b/src/waypoint.cpp
index fe74d7ca7..4bd46efe0 100644
--- a/src/waypoint.cpp
+++ b/src/waypoint.cpp
@@ -353,7 +353,11 @@ int32 CmdRenameWaypoint(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
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);