diff --git a/libnymea-core/integrations/thingmanagerimplementation.cpp b/libnymea-core/integrations/thingmanagerimplementation.cpp index b00c373a..bb8d29a2 100644 --- a/libnymea-core/integrations/thingmanagerimplementation.cpp +++ b/libnymea-core/integrations/thingmanagerimplementation.cpp @@ -1426,7 +1426,11 @@ void ThingManagerImplementation::loadPlugins() if (m_integrationPlugins.contains(plugin->pluginId())) { qCWarning(dcThingManager()) << "A plugin with this ID is already loaded. Not loading" << entry << plugin->pluginId(); - delete plugin; + // Depending on the plugin type, duplicate loading of the same plugin file may return the same instance. In which + // case we do *not* want to delete it, but we want to delete the dupe if a new instance has been created with the same ID. + if (m_integrationPlugins.value(plugin->pluginId()) != plugin) { + delete plugin; + } continue; } loadPlugin(plugin); diff --git a/tests/testlib/nymeatestbase.cpp b/tests/testlib/nymeatestbase.cpp index ef509cce..ebbd8acf 100644 --- a/tests/testlib/nymeatestbase.cpp +++ b/tests/testlib/nymeatestbase.cpp @@ -220,7 +220,7 @@ QVariantList NymeaTestBase::checkNotifications(const QSignalSpy &spy, const QStr QVariant NymeaTestBase::getAndWait(const QNetworkRequest &request, const int &expectedStatus) { QNetworkAccessManager nam; - connect(&nam, &QNetworkAccessManager::sslErrors, [&nam](QNetworkReply *reply, const QList &) { + connect(&nam, &QNetworkAccessManager::sslErrors, [](QNetworkReply *reply, const QList &) { reply->ignoreSslErrors(); }); QSignalSpy clientSpy(&nam, SIGNAL(finished(QNetworkReply*))); @@ -258,7 +258,7 @@ QVariant NymeaTestBase::getAndWait(const QNetworkRequest &request, const int &ex QVariant NymeaTestBase::deleteAndWait(const QNetworkRequest &request, const int &expectedStatus) { QNetworkAccessManager nam; - connect(&nam, &QNetworkAccessManager::sslErrors, [this, &nam](QNetworkReply *reply, const QList &) { + connect(&nam, &QNetworkAccessManager::sslErrors, [](QNetworkReply *reply, const QList &) { reply->ignoreSslErrors(); }); QSignalSpy clientSpy(&nam, SIGNAL(finished(QNetworkReply*))); @@ -293,7 +293,7 @@ QVariant NymeaTestBase::deleteAndWait(const QNetworkRequest &request, const int QVariant NymeaTestBase::postAndWait(const QNetworkRequest &request, const QVariant ¶ms, const int &expectedStatus) { QNetworkAccessManager nam; - connect(&nam, &QNetworkAccessManager::sslErrors, [this, &nam](QNetworkReply *reply, const QList &) { + connect(&nam, &QNetworkAccessManager::sslErrors, [](QNetworkReply *reply, const QList &) { reply->ignoreSslErrors(); }); QSignalSpy clientSpy(&nam, SIGNAL(finished(QNetworkReply*))); @@ -333,7 +333,7 @@ QVariant NymeaTestBase::postAndWait(const QNetworkRequest &request, const QVaria QVariant NymeaTestBase::putAndWait(const QNetworkRequest &request, const QVariant ¶ms, const int &expectedStatus) { QNetworkAccessManager nam; - connect(&nam, &QNetworkAccessManager::sslErrors, [this, &nam](QNetworkReply *reply, const QList &) { + connect(&nam, &QNetworkAccessManager::sslErrors, [](QNetworkReply *reply, const QList &) { reply->ignoreSslErrors(); }); QSignalSpy clientSpy(&nam, SIGNAL(finished(QNetworkReply*)));