Index: source/graphics/MapReader.cpp =================================================================== --- source/graphics/MapReader.cpp +++ source/graphics/MapReader.cpp @@ -955,7 +955,7 @@ CStrW TemplateName; int PlayerID = 0; std::vector Garrison; - std::vector > Turrets; + std::vector> Turrets; CFixedVector3D Position; CFixedVector3D Orientation; long Seed = -1; @@ -1023,7 +1023,7 @@ for (const XMBElement& turretPoint : turrets) { XMBAttributeList attrs = turretPoint.GetAttributes(); - Turrets.push_back(std::make_pair( + Turrets.emplace_back(std::make_pair( attrs.GetNamedItem(at_turret), attrs.GetNamedItem(at_uid).ToInt() )); @@ -1068,20 +1068,18 @@ { CmpPtr cmpGarrisonHolder(sim, ent); if (cmpGarrisonHolder) - cmpGarrisonHolder->SetInitEntities(Garrison); + cmpGarrisonHolder->SetInitEntities(std::move(Garrison)); else LOGERROR("CXMLMapReader::ReadEntities() entity '%d' of player '%d' has no GarrisonHolder component and thus cannot garrison units.", ent, PlayerID); - Garrison.clear(); } if (!Turrets.empty()) { CmpPtr cmpTurretHolder(sim, ent); if (cmpTurretHolder) - cmpTurretHolder->SetInitEntities(Turrets); + cmpTurretHolder->SetInitEntities(std::move(Turrets)); else LOGERROR("CXMLMapReader::ReadEntities() entity '%d' of player '%d' has no TurretHolder component and thus cannot use turrets.", ent, PlayerID); - Turrets.clear(); } CmpPtr cmpObstruction(sim, ent); Index: source/graphics/MapWriter.cpp =================================================================== --- source/graphics/MapWriter.cpp +++ source/graphics/MapWriter.cpp @@ -361,7 +361,7 @@ CmpPtr cmpTurretHolder(sim, ent); if (cmpTurretHolder) { - std::vector > turrets = cmpTurretHolder->GetTurrets(); + std::vector> turrets = cmpTurretHolder->GetTurrets(); if (!turrets.empty()) { XMLWriter_Element turretTag(xmlMapFile, "Turrets"); Index: source/simulation2/components/ICmpGarrisonHolder.cpp =================================================================== --- source/simulation2/components/ICmpGarrisonHolder.cpp +++ source/simulation2/components/ICmpGarrisonHolder.cpp @@ -38,6 +38,7 @@ virtual void SetInitEntities(std::vector entities) { m_Script.CallVoid("SetInitGarrison", entities); + entities.clear(); } }; Index: source/simulation2/components/ICmpTurretHolder.cpp =================================================================== --- source/simulation2/components/ICmpTurretHolder.cpp +++ source/simulation2/components/ICmpTurretHolder.cpp @@ -54,6 +54,7 @@ { for (const std::pair& p : entities) m_Script.CallVoid("SetInitEntity", p.first, p.second); + entities.clear(); } };