diff options
author | frosch <frosch@openttd.org> | 2011-06-11 20:47:31 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2011-06-11 20:47:31 +0000 |
commit | d5e7537e14521481539a9da1745ce6a2790fcefa (patch) | |
tree | ffbd425373d61cde3601a99a0331445924dc3ec7 /src | |
parent | b2275b40935603d15030a8f79fff1f56bdb5ab0e (diff) | |
download | openttd-d5e7537e14521481539a9da1745ce6a2790fcefa.tar.xz |
(svn r22552) -Fix: Clear airport persistent storage on construction/removal of airports.
Diffstat (limited to 'src')
-rw-r--r-- | src/newgrf_storage.h | 6 | ||||
-rw-r--r-- | src/station_cmd.cpp | 2 |
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); |