diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -67,6 +67,8 @@ #include "table/strings.h" +#include + #include "safeguards.h" /** @@ -216,7 +218,7 @@ enum StationNaming { /** Information to handle station action 0 property 24 correctly */ struct StationNameInformation { uint32_t free_names; ///< Current bitset of free names (we can remove names). - bool *indtypes; ///< Array of bools telling whether an industry type has been found. + std::bitset indtypes; ///< Bit set indicating when an industry type has been found. }; /** @@ -257,19 +259,18 @@ static StringID GenerateStationName(Stat const Town *t = st->town; uint32_t free_names = UINT32_MAX; - bool indtypes[NUM_INDUSTRYTYPES]; - memset(indtypes, 0, sizeof(indtypes)); + StationNameInformation sni{}; for (const Station *s : Station::Iterate()) { if (s != st && s->town == t) { if (s->indtype != IT_INVALID) { - indtypes[s->indtype] = true; + sni.indtypes[s->indtype] = true; StringID name = GetIndustrySpec(s->indtype)->station_name; if (name != STR_UNDEFINED) { /* Filter for other industrytypes with the same name */ for (IndustryType it = 0; it < NUM_INDUSTRYTYPES; it++) { const IndustrySpec *indsp = GetIndustrySpec(it); - if (indsp->enabled && indsp->station_name == name) indtypes[it] = true; + if (indsp->enabled && indsp->station_name == name) sni.indtypes[it] = true; } } continue; @@ -285,7 +286,7 @@ static StringID GenerateStationName(Stat } TileIndex indtile = tile; - StationNameInformation sni = { free_names, indtypes }; + sni.free_names = free_names; if (CircularTileSearch(&indtile, 7, FindNearIndustryName, &sni)) { /* An industry has been found nearby */ IndustryType indtype = GetIndustryType(indtile);