Fix leak in CloudProviderWrapper
authorStephan Beyer <s-beyer@gmx.net>
Fri, 15 May 2020 23:00:55 +0000 (01:00 +0200)
committerStephan Beyer <s-beyer@gmx.net>
Wed, 20 May 2020 23:22:15 +0000 (01:22 +0200)
The member _recentlyChanged, allocated in the constructor, was leaking.

The ad-hoc way to fix the leak would have been to add a destructor
that deletes _recentlyChanged.  However, there is no good reason why
_recentlyChanged has to be a pointer to a QList (instead of a QList).
Hence this commit changes the type of the _recentlyChanged member
from a QList pointer to a QList.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
src/gui/cloudproviders/cloudproviderwrapper.cpp
src/gui/cloudproviders/cloudproviderwrapper.h

index 421ae625a5eb69bd812592db85428257c26f2a0e..3b520721a32a042c56ebc33ec56bf8e5d94e95dc 100644 (file)
@@ -38,7 +38,6 @@ CloudProviderWrapper::CloudProviderWrapper(QObject *parent, Folder *folder, int
 {
     GMenuModel *model;
     GActionGroup *action_group;
-    _recentlyChanged = new QList<QPair<QString, QString>>();
     QString accountName = QString("Folder/%1").arg(folderId);
 
     _cloudProvider = CLOUD_PROVIDERS_PROVIDER_EXPORTER(cloudprovider);
@@ -109,11 +108,11 @@ void CloudProviderWrapper::slotUpdateProgress(const QString &folder, const Progr
         if (f) {
             QString fullPath = f->path() + '/' + progress._lastCompletedItem._file;
             if (QFile(fullPath).exists()) {
-                if (_recentlyChanged->length() > 5)
-                    _recentlyChanged->removeFirst();
-                _recentlyChanged->append(qMakePair(actionText, fullPath));
+                if (_recentlyChanged.length() > 5)
+                    _recentlyChanged.removeFirst();
+                _recentlyChanged.append(qMakePair(actionText, fullPath));
             } else {
-                _recentlyChanged->append(qMakePair(actionText, QString("")));
+                _recentlyChanged.append(qMakePair(actionText, QString("")));
             }
         }
 
@@ -152,9 +151,9 @@ void CloudProviderWrapper::slotUpdateProgress(const QString &folder, const Progr
             && shouldShowInRecentsMenu(progress._lastCompletedItem)) {
         GMenuItem* item;
         g_menu_remove_all (G_MENU(_recentMenu));
-        if(!_recentlyChanged->isEmpty()) {
+        if(!_recentlyChanged.isEmpty()) {
             QList<QPair<QString, QString>>::iterator i;
-            for (i = _recentlyChanged->begin(); i != _recentlyChanged->end(); i++) {
+            for (i = _recentlyChanged.begin(); i != _recentlyChanged.end(); i++) {
                 QString label = i->first;
                 QString fullPath = i->second;
                 item = menu_item_new(label, "cloudprovider.showfile");
index 24830c89a3857c2b451f894d8b4161773d905ec6..e3a46cc435d9f43e674a4b40d9818edc5e338924 100644 (file)
@@ -57,7 +57,7 @@ private:
     Folder *_folder;
     CloudProvidersProviderExporter *_cloudProvider;
     CloudProvidersAccountExporter *_cloudProviderAccount;
-    QList<QPair<QString, QString>> *_recentlyChanged;
+    QList<QPair<QString, QString>> _recentlyChanged;
     bool _paused;
     GMenu* _mainMenu = nullptr;
     GMenu* _recentMenu = nullptr;