Fix leak in CloudProviderManager
authorStephan Beyer <s-beyer@gmx.net>
Fri, 15 May 2020 23:10:34 +0000 (01:10 +0200)
committerStephan Beyer <s-beyer@gmx.net>
Wed, 20 May 2020 23:22:15 +0000 (01:22 +0200)
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 <s-beyer@gmx.net>
src/gui/cloudproviders/cloudprovidermanager.cpp
src/gui/cloudproviders/cloudprovidermanager.h

index 892f60abd1904657c0a7e9c315ae5068a66c6cfd..d5a07512d0a6de003a11601efd61ce9f206f8dd0 100644 (file)
@@ -51,29 +51,28 @@ void CloudProviderManager::registerSignals()
 
 CloudProviderManager::CloudProviderManager(QObject *parent) : QObject(parent)
 {
-    _map = new QMap<QString, CloudProviderWrapper*>();
     _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<QString, CloudProviderWrapper*> i(*_map);
+    QMapIterator<QString, CloudProviderWrapper*> 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);
         }
     }
 }
index 17aafc5dc07a82a08f006825a3f29ca521739726..deb09932f351ad3ddd32d6f32e97fd4c5baaa975 100644 (file)
@@ -35,7 +35,7 @@ public slots:
     void slotFolderListChanged(const Folder::Map &folderMap);
 
 private:
-    QMap<QString, CloudProviderWrapper*> *_map;
+    QMap<QString, CloudProviderWrapper*> _map;
     unsigned int _folder_index;
 };