diff --git a/src/app/application.cpp b/src/app/application.cpp index 6d4b0a023..3b1df76af 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -515,7 +515,6 @@ int Application::exec(const QStringList ¶ms) new RSS::Session; // create RSS::Session singleton new RSS::AutoDownloader; // create RSS::AutoDownloader singleton - new SearchPluginManager; #ifdef DISABLE_GUI #ifndef DISABLE_WEBUI @@ -710,7 +709,6 @@ void Application::cleanup() delete m_webui; #endif - delete SearchPluginManager::instance(); delete RSS::AutoDownloader::instance(); delete RSS::Session::instance(); @@ -726,6 +724,7 @@ void Application::cleanup() delete m_fileLogger; Logger::freeInstance(); IconProvider::freeInstance(); + SearchPluginManager::freeInstance(); Utils::Fs::removeDirRecursive(Utils::Fs::tempPath()); #ifndef DISABLE_GUI diff --git a/src/base/search/searchpluginmanager.cpp b/src/base/search/searchpluginmanager.cpp index c72aa46df..1b079b089 100644 --- a/src/base/search/searchpluginmanager.cpp +++ b/src/base/search/searchpluginmanager.cpp @@ -101,9 +101,17 @@ SearchPluginManager::~SearchPluginManager() SearchPluginManager *SearchPluginManager::instance() { + if (!m_instance) + m_instance = new SearchPluginManager; return m_instance; } +void SearchPluginManager::freeInstance() +{ + if (m_instance) + delete m_instance; +} + QStringList SearchPluginManager::allPlugins() const { return m_plugins.keys(); diff --git a/src/base/search/searchpluginmanager.h b/src/base/search/searchpluginmanager.h index bf12a745a..e5aa6ce88 100644 --- a/src/base/search/searchpluginmanager.h +++ b/src/base/search/searchpluginmanager.h @@ -62,6 +62,7 @@ public: ~SearchPluginManager() override; static SearchPluginManager *instance(); + static void freeInstance(); QStringList allPlugins() const; QStringList enabledPlugins() const;