summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-06-11 20:47:31 +0000
committerfrosch <frosch@openttd.org>2011-06-11 20:47:31 +0000
commitd5e7537e14521481539a9da1745ce6a2790fcefa (patch)
treeffbd425373d61cde3601a99a0331445924dc3ec7
parentb2275b40935603d15030a8f79fff1f56bdb5ab0e (diff)
downloadopenttd-d5e7537e14521481539a9da1745ce6a2790fcefa.tar.xz
(svn r22552) -Fix: Clear airport persistent storage on construction/removal of airports.
-rw-r--r--src/newgrf_storage.h6
-rw-r--r--src/station_cmd.cpp2
2 files changed, 8 insertions, 0 deletions
diff --git a/src/newgrf_storage.h b/src/newgrf_storage.h
index f03308509..a7f5788c4 100644
--- a/src/newgrf_storage.h
+++ b/src/newgrf_storage.h
@@ -62,6 +62,12 @@ struct PersistentStorageArray : BaseStorageArray {
free(this->prev_storage);
}
+ /** Resets all values to zero. */
+ void ResetToZero()
+ {
+ memset(this->storage, 0, sizeof(this->storage));
+ }
+
/**
* Stores some value at a given position.
* If there is no backup of the data that backup is made and then
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index 7546edd46..696c0a8c2 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2191,6 +2191,7 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
st->airport.layout = layout;
st->airport.flags = 0;
st->airport.rotation = rotation;
+ st->airport.psa.ResetToZero();
st->rect.BeforeAddRect(tile, w, h, StationRect::ADD_TRY);
@@ -2287,6 +2288,7 @@ static CommandCost RemoveAirport(TileIndex tile, DoCommandFlag flags)
st->airport.Clear();
st->facilities &= ~FACIL_AIRPORT;
+ st->airport.psa.ResetToZero();
SetWindowWidgetDirty(WC_STATION_VIEW, st->index, SVW_PLANES);