diff --git a/channels.cpp b/channels.cpp index 3b77a3e5..1040c585 100644 --- a/channels.cpp +++ b/channels.cpp @@ -15,9 +15,7 @@ Channels::getItems() { QMutexLocker locker(&Channels::channelsMutex); - int size = Channels::channels.size(); - - std::vector> items(size); + std::vector> items; for (auto &item : Channels::channels.values()) { items.push_back(std::get<0>(item)); diff --git a/ircmanager.cpp b/ircmanager.cpp index 9efa65ee..56ad1e66 100644 --- a/ircmanager.cpp +++ b/ircmanager.cpp @@ -15,7 +15,7 @@ namespace chatterino { Account *IrcManager::account = nullptr; -IrcConnection *IrcManager::connection = NULL; +std::shared_ptr IrcManager::connection; QMutex IrcManager::connectionMutex; long IrcManager::connectionGeneration = 0; const QString IrcManager::defaultClientId = "7ue61iz46fz11y3cugd0l3tawb4taal"; @@ -136,9 +136,8 @@ IrcManager::beginConnecting() IrcManager::connectionMutex.lock(); if (generation == IrcManager::connectionGeneration) { - delete IrcManager::connection; c->moveToThread(QCoreApplication::instance()->thread()); - IrcManager::connection = c; + IrcManager::connection = std::shared_ptr(c); auto channels = Channels::getItems(); @@ -156,9 +155,8 @@ IrcManager::disconnect() { IrcManager::connectionMutex.lock(); - if (IrcManager::connection != NULL) { - delete IrcManager::connection; - IrcManager::connection = NULL; + if (IrcManager::connection.get() != NULL) { + IrcManager::connection = std::shared_ptr(); } IrcManager::connectionMutex.unlock(); diff --git a/ircmanager.h b/ircmanager.h index 3bc9c114..2c25d966 100644 --- a/ircmanager.h +++ b/ircmanager.h @@ -52,7 +52,7 @@ private: static void beginConnecting(); - static IrcConnection *connection; + static std::shared_ptr connection; static QMutex connectionMutex; static long connectionGeneration;