Fix false positive cache check error on MinGW/GCC 10 builds

Due to incorrect default operator== on structs with C arrays.

See: #709
See: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94924
This commit is contained in:
Jonathan G Rennison
2024-07-03 00:25:16 +01:00
parent 5f34407ce1
commit 28c115fc33
3 changed files with 9 additions and 9 deletions

View File

@@ -31,12 +31,12 @@ struct CompanyEconomyEntry {
};
struct CompanyInfrastructure {
uint32_t road[ROADTYPE_END]; ///< Count of company owned track bits for each road type.
uint32_t signal; ///< Count of company owned signals.
uint32_t rail[RAILTYPE_END]; ///< Count of company owned track bits for each rail type.
uint32_t water; ///< Count of company owned track bits for canals.
uint32_t station; ///< Count of company owned station tiles.
uint32_t airport; ///< Count of company owned airports.
std::array<uint32_t, ROADTYPE_END> road{}; ///< Count of company owned track bits for each road type.
uint32_t signal{}; ///< Count of company owned signals.
std::array<uint32_t, RAILTYPE_END> rail{}; ///< Count of company owned track bits for each rail type.
uint32_t water{}; ///< Count of company owned track bits for canals.
uint32_t station{}; ///< Count of company owned station tiles.
uint32_t airport{}; ///< Count of company owned airports.
/** Get total sum of all owned track bits. */
uint32_t GetRailTotal() const

View File

@@ -2456,7 +2456,7 @@ struct CompanyWindow : Window
int y = r.top;
uint rail_pieces = c->infrastructure.signal;
for (uint i = 0; i < lengthof(c->infrastructure.rail); i++) rail_pieces += c->infrastructure.rail[i];
for (uint32_t pieces : c->infrastructure.rail) rail_pieces += pieces;
if (rail_pieces != 0) {
SetDParam(0, rail_pieces);
DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL);
@@ -2464,7 +2464,7 @@ struct CompanyWindow : Window
}
uint road_pieces = 0;
for (uint i = 0; i < lengthof(c->infrastructure.road); i++) road_pieces += c->infrastructure.road[i];
for (uint32_t pieces : c->infrastructure.road) road_pieces += pieces;
if (road_pieces != 0) {
SetDParam(0, road_pieces);
DrawString(r.left, r.right, y, STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD);

View File

@@ -101,7 +101,7 @@ CompanyManagerFace ConvertFromOldCompanyManagerFace(uint32_t face)
void AfterLoadCompanyStats()
{
/* Reset infrastructure statistics to zero. */
for (Company *c : Company::Iterate()) MemSetT(&c->infrastructure, 0);
for (Company *c : Company::Iterate()) c->infrastructure = {};
/* Collect airport count. */
for (const Station *st : Station::Iterate()) {