diff --git a/src/AIModel/AIManager.cxx b/src/AIModel/AIManager.cxx index 4aea54672..d438ae7fb 100644 --- a/src/AIModel/AIManager.cxx +++ b/src/AIModel/AIManager.cxx @@ -419,7 +419,7 @@ FGAIManager::updateLOD(SGPropertyNode* node) } void -FGAIManager::attach(FGAIBase *model) +FGAIManager::attach(const SGSharedPtr<FGAIBase> &model) { const char* typeString = model->getTypeString(); SGPropertyNode* root = globals->get_props()->getNode("ai/models", true); diff --git a/src/AIModel/AIManager.hxx b/src/AIModel/AIManager.hxx index de99783b1..087f245db 100644 --- a/src/AIModel/AIManager.hxx +++ b/src/AIModel/AIManager.hxx @@ -54,7 +54,7 @@ public: static const char* staticSubsystemClassId() { return "ai-model"; } void updateLOD(SGPropertyNode* node); - void attach(FGAIBase *model); + void attach(const SGSharedPtr<FGAIBase> &model); const FGAIBase *calcCollision(double alt, double lat, double lon, double fuse_range); diff --git a/src/Network/Swift/SwiftAircraftManager.cpp b/src/Network/Swift/SwiftAircraftManager.cpp index c2bdde941..e32fd67ce 100644 --- a/src/Network/Swift/SwiftAircraftManager.cpp +++ b/src/Network/Swift/SwiftAircraftManager.cpp @@ -40,12 +40,12 @@ bool FGSwiftAircraftManager::isInitialized() const bool FGSwiftAircraftManager::addPlane(const std::string& callsign, const std::string& modelString) { this->removePlane(callsign); // Remove plane if already exists e.g. when rematching is done. - auto curAircraft = new FGAISwiftAircraft(callsign, modelString); + auto curAircraft = FGAISwiftAircraftPtr(new FGAISwiftAircraft(callsign, modelString)); globals->get_subsystem<FGAIManager>()->attach(curAircraft); // Init props after prop-root is assigned curAircraft->initProps(); - aircraftByCallsign.insert(std::pair<std::string, FGAISwiftAircraft*>(callsign, curAircraft)); + aircraftByCallsign.insert(std::pair<std::string, FGAISwiftAircraftPtr>(callsign, curAircraft)); return true; } diff --git a/src/Network/Swift/SwiftAircraftManager.h b/src/Network/Swift/SwiftAircraftManager.h index 6ebb9e273..92dbfb19c 100644 --- a/src/Network/Swift/SwiftAircraftManager.h +++ b/src/Network/Swift/SwiftAircraftManager.h @@ -29,6 +29,8 @@ class FGSwiftAircraftManager { + using FGAISwiftAircraftPtr = SGSharedPtr<FGAISwiftAircraft>; + public: FGSwiftAircraftManager(); ~FGSwiftAircraftManager(); @@ -44,7 +46,7 @@ public: void setPlanesSurfaces(const std::vector<AircraftSurfaces>& surfaces); private: - std::unordered_map<std::string, FGAISwiftAircraft*> aircraftByCallsign; + std::unordered_map<std::string, FGAISwiftAircraftPtr> aircraftByCallsign; bool m_initialized = false; };