aboutsummaryrefslogtreecommitdiff
path: root/src/configreader.cpp
diff options
context:
space:
mode:
authorGravatar Sadie Powell2020-11-03 14:48:54 +0000
committerGravatar Sadie Powell2020-11-03 19:54:13 +0000
commit89a21202de35eeec8ef464ada5e9fbb97fd83ba5 (patch)
treeb70c242c58bae562bef1d42c34c9d5d628d81208 /src/configreader.cpp
parentClean up a bunch of contructors and destructors. (diff)
Convert ConnectClass from reference<> to std::shared_ptr<>.
Diffstat (limited to 'src/configreader.cpp')
-rw-r--r--src/configreader.cpp16
1 files changed, 7 insertions, 9 deletions
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<std::string, ConnectClass*> ClassMap;
+ typedef std::map<std::string, std::shared_ptr<ConnectClass>> 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<ConnectClass> 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<ConnectClass>(tag, type, mask, parent)
+ : std::make_shared<ConnectClass>(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<ConnectClass> old = oldMask->second;
oldBlocksByMask.erase(oldMask);
old->Update(me);
- delete me;
me = old;
}
Classes[i] = me;