From: Stephan Beyer Date: Fri, 15 May 2020 23:10:34 +0000 (+0200) Subject: Fix leak in CloudProviderManager X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~222^2^2~220^2~2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=eaf4aa0e5b5d17b2061aa5ae9d0edce968f5a1e5;p=nextcloud-desktop.git Fix leak in CloudProviderManager The member _map, allocated in the constructor, was leaking. The ad-hoc way to fix the leak would have been to add a destructor that deletes _map. However, there is no good reason why _map has to be a pointer to a QMap (instead of a QMap). Hence this commit changes the type of the _map member from a QMap pointer to a QMap. Signed-off-by: Stephan Beyer --- diff --git a/src/gui/cloudproviders/cloudprovidermanager.cpp b/src/gui/cloudproviders/cloudprovidermanager.cpp index 892f60abd..d5a07512d 100644 --- a/src/gui/cloudproviders/cloudprovidermanager.cpp +++ b/src/gui/cloudproviders/cloudprovidermanager.cpp @@ -51,29 +51,28 @@ void CloudProviderManager::registerSignals() CloudProviderManager::CloudProviderManager(QObject *parent) : QObject(parent) { - _map = new QMap(); _folder_index = 0; g_bus_own_name (G_BUS_TYPE_SESSION, LIBCLOUDPROVIDERS_DBUS_BUS_NAME, G_BUS_NAME_OWNER_FLAGS_NONE, nullptr, on_name_acquired, nullptr, this, nullptr); } void CloudProviderManager::slotFolderListChanged(const Folder::Map &folderMap) { - QMapIterator i(*_map); + QMapIterator i(_map); while (i.hasNext()) { i.next(); if (!folderMap.contains(i.key())) { cloud_providers_provider_exporter_remove_account(_providerExporter, i.value()->accountExporter()); - delete _map->find(i.key()).value(); - _map->remove(i.key()); + delete _map.find(i.key()).value(); + _map.remove(i.key()); } } Folder::MapIterator j(folderMap); while (j.hasNext()) { j.next(); - if (!_map->contains(j.key())) { + if (!_map.contains(j.key())) { auto *cpo = new CloudProviderWrapper(this, j.value(), _folder_index++, _providerExporter); - _map->insert(j.key(), cpo); + _map.insert(j.key(), cpo); } } } diff --git a/src/gui/cloudproviders/cloudprovidermanager.h b/src/gui/cloudproviders/cloudprovidermanager.h index 17aafc5dc..deb09932f 100644 --- a/src/gui/cloudproviders/cloudprovidermanager.h +++ b/src/gui/cloudproviders/cloudprovidermanager.h @@ -35,7 +35,7 @@ public slots: void slotFolderListChanged(const Folder::Map &folderMap); private: - QMap *_map; + QMap _map; unsigned int _folder_index; };