diff options
-rw-r--r-- | src/newgrf.cpp | 38 | ||||
-rw-r--r-- | src/newgrf.h | 3 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/newgrf.cpp b/src/newgrf.cpp index d16bd0676..0ba3aa846 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -4304,6 +4304,43 @@ static void ResetCustomHouses() } } +static void ResetCustomIndustries() +{ + GRFFile *file; + + for (file = _first_grffile; file != NULL; file = file->next) { + uint i; + /* We are verifiying both tiles and industries specs loaded from the grf file + * First, let's deal with industryspec */ + if (file->industryspec != NULL) { + + for (i = 0; i < NUM_INDUSTRYTYPES; i++) { + IndustrySpec *ind = file->industryspec[i]; + + if (ind != NULL) { + free(ind); + ind = NULL; + } + } + + free(file->industryspec); + file->industryspec = NULL; + } + + if (file->indtspec != NULL) { + for (i = 0; i < NUM_INDUSTRYTILES; i++) { + if (file->indtspec[i] != NULL) { + free(file->indtspec[i]); + file->indtspec[i] = NULL; + } + } + + free(file->indtspec); + file->indtspec = NULL; + } + } +} + static void ResetNewGRF() { GRFFile *next; @@ -4370,6 +4407,7 @@ static void ResetNewGRFData() ResetHouses(); /* Reset the industries structures*/ + ResetCustomIndustries(); ResetIndustries(); /* Reset station classes */ diff --git a/src/newgrf.h b/src/newgrf.h index 0ee155af0..7324e7dd9 100644 --- a/src/newgrf.h +++ b/src/newgrf.h @@ -10,6 +10,7 @@ #include "newgrf_config.h" #include "helpers.hpp" #include "cargotype.h" +#include "industry.h" enum GrfLoadingStage { GLS_FILESCAN, @@ -69,6 +70,8 @@ struct GRFFile { StationSpec **stations; HouseSpec **housespec; + IndustrySpec **industryspec; + IndustryTileSpec **indtspec; uint32 param[0x80]; uint param_end; ///< one more than the highest set parameter |