diff --git a/src/newgrf_commons.cpp b/src/newgrf_commons.cpp index 4fa37000a7..7dd5e22cbc 100644 --- a/src/newgrf_commons.cpp +++ b/src/newgrf_commons.cpp @@ -44,21 +44,10 @@ OverrideManagerBase::OverrideManagerBase(uint16 offset, uint16 maximum, uint16 i max_new_entities = maximum; invalid_ID = invalid; - mapping_ID = CallocT(max_new_entities); - entity_overrides = MallocT(max_offset); - for (size_t i = 0; i < max_offset; i++) entity_overrides[i] = invalid; - grfid_overrides = CallocT(max_offset); -} - -/** - * Destructor of the generic class. - * Frees allocated memory of constructor - */ -OverrideManagerBase::~OverrideManagerBase() -{ - free(mapping_ID); - free(entity_overrides); - free(grfid_overrides); + this->mapping_ID.resize(this->max_new_entities); + this->entity_overrides.resize(this->max_offset); + std::fill(this->entity_overrides.begin(), this->entity_overrides.end(), this->invalid_ID); + this->grfid_overrides.resize(this->max_offset); } /** @@ -81,16 +70,14 @@ void OverrideManagerBase::Add(uint8 local_id, uint32 grfid, uint entity_type) /** Resets the mapping, which is used while initializing game */ void OverrideManagerBase::ResetMapping() { - memset(mapping_ID, 0, (max_new_entities - 1) * sizeof(EntityIDMapping)); + std::fill(this->mapping_ID.begin(), this->mapping_ID.end(), EntityIDMapping{}); } /** Resets the override, which is used while initializing game */ void OverrideManagerBase::ResetOverride() { - for (uint16 i = 0; i < max_offset; i++) { - entity_overrides[i] = invalid_ID; - grfid_overrides[i] = 0; - } + std::fill(this->entity_overrides.begin(), this->entity_overrides.end(), this->invalid_ID); + std::fill(this->grfid_overrides.begin(), this->grfid_overrides.end(), uint32()); } /** diff --git a/src/newgrf_commons.h b/src/newgrf_commons.h index ff241369a2..6a908417b1 100644 --- a/src/newgrf_commons.h +++ b/src/newgrf_commons.h @@ -191,8 +191,8 @@ struct EntityIDMapping { class OverrideManagerBase { protected: - uint16 *entity_overrides; - uint32 *grfid_overrides; + std::vector entity_overrides; + std::vector grfid_overrides; uint16 max_offset; ///< what is the length of the original entity's array of specs uint16 max_new_entities; ///< what is the amount of entities, old and new summed @@ -201,10 +201,10 @@ protected: virtual bool CheckValidNewID(uint16 testid) { return true; } public: - EntityIDMapping *mapping_ID; ///< mapping of ids from grf files. Public out of convenience + std::vector mapping_ID; ///< mapping of ids from grf files. Public out of convenience OverrideManagerBase(uint16 offset, uint16 maximum, uint16 invalid); - virtual ~OverrideManagerBase(); + virtual ~OverrideManagerBase() {} void ResetOverride(); void ResetMapping(); @@ -267,7 +267,7 @@ public: struct AirportTileSpec; class AirportTileOverrideManager : public OverrideManagerBase { protected: - virtual bool CheckValidNewID(uint16 testid) { return testid != 0xFF; } + virtual bool CheckValidNewID(uint16 testid) override { return testid != 0xFF; } public: AirportTileOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {} @@ -278,7 +278,7 @@ public: struct ObjectSpec; class ObjectOverrideManager : public OverrideManagerBase { protected: - virtual bool CheckValidNewID(uint16 testid) { return testid != 0xFF; } + virtual bool CheckValidNewID(uint16 testid) override { return testid != 0xFF; } public: ObjectOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {}