From 89a21202de35eeec8ef464ada5e9fbb97fd83ba5 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 3 Nov 2020 14:48:54 +0000 Subject: Convert ConnectClass from reference<> to std::shared_ptr<>. --- src/configreader.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'src/configreader.cpp') diff --git a/src/configreader.cpp b/src/configreader.cpp index eb28ddef3..78a21eec7 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -158,13 +158,12 @@ void ServerConfig::CrossCheckOperClassType() void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) { - typedef std::map ClassMap; + typedef std::map> ClassMap; ClassMap oldBlocksByMask; if (current) { - for(ClassVector::iterator i = current->Classes.begin(); i != current->Classes.end(); ++i) + for (auto& c : current->Classes) { - ConnectClass* c = *i; if (c->name.compare(0, 8, "unnamed-", 8)) { oldBlocksByMask["n" + c->name] = c; @@ -205,7 +204,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) continue; } - ConnectClass* parent = NULL; + std::shared_ptr parent; std::string parentName = tag->getString("parent"); if (!parentName.empty()) { @@ -261,9 +260,9 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) throw CoreException("Two connect classes with name \"" + name + "\" defined!"); names[name] = i; - ConnectClass* me = parent ? - new ConnectClass(tag, type, mask, *parent) : - new ConnectClass(tag, type, mask); + auto me = parent + ? std::make_shared(tag, type, mask, parent) + : std::make_shared(tag, type, mask); me->name = name; @@ -312,10 +311,9 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current) ClassMap::iterator oldMask = oldBlocksByMask.find(typeMask); if (oldMask != oldBlocksByMask.end()) { - ConnectClass* old = oldMask->second; + std::shared_ptr old = oldMask->second; oldBlocksByMask.erase(oldMask); old->Update(me); - delete me; me = old; } Classes[i] = me; -- cgit v1.3.1-10-gc9f91