]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fixes leak of DolphinFileMetaDataWidget in ToolTipManager
authorDavid Hallas <david@davidhallas.dk>
Sun, 3 Mar 2019 06:37:52 +0000 (07:37 +0100)
committerDavid Hallas <david@davidhallas.dk>
Sun, 10 Mar 2019 16:41:42 +0000 (17:41 +0100)
Summary:
Fixes leak of DolphinFileMetaDataWidget in ToolTipManager. The
destructor of ToolTipManager failed to delete the m_fileMetaDataWidget
member. This is seen at shutdown but also when you close a tab that has
displayed a tooltip.

Test Plan:
Compile Dolphin with address sanitizer
Open Dolphin
Show a tooltip
Close Dolphin

Reviewers: #dolphin, elvisangelaccio

Reviewed By: #dolphin, elvisangelaccio

Subscribers: kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D19485

src/views/tooltips/tooltipmanager.cpp
src/views/tooltips/tooltipmanager.h

index bb2890138a99a952af19c8b076382d9d8714669f..9e79a8f704a424b0e7e8a1c1eb02d9e055ac94da 100644 (file)
@@ -82,11 +82,10 @@ void ToolTipManager::showToolTip(const KFileItem& item, const QRectF& itemRect,
     // Only start the retrieving of the content, when the mouse has been over this
     // item for 200 milliseconds. This prevents a lot of useless preview jobs and
     // meta data retrieval, when passing rapidly over a lot of items.
-    delete m_fileMetaDataWidget;
-    m_fileMetaDataWidget = new DolphinFileMetaDataWidget();
-    connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::metaDataRequestFinished,
+    m_fileMetaDataWidget.reset(new DolphinFileMetaDataWidget());
+    connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::metaDataRequestFinished,
             this, &ToolTipManager::slotMetaDataRequestFinished);
-    connect(m_fileMetaDataWidget, &DolphinFileMetaDataWidget::urlActivated,
+    connect(m_fileMetaDataWidget.data(), &DolphinFileMetaDataWidget::urlActivated,
             this, &ToolTipManager::urlActivated);
 
     m_contentRetrievalTimer->start();
@@ -209,7 +208,7 @@ void ToolTipManager::showToolTip()
     if (!m_tooltipWidget) {
         m_tooltipWidget.reset(new KToolTipWidget());
     }
-    m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget, m_transientParent);
+    m_tooltipWidget->showBelow(m_itemRect, m_fileMetaDataWidget.data(), m_transientParent);
     m_toolTipRequested = false;
 }
 
index f6d2b7304e0319c30c4662baeeb477a22fc2f027..63c723f8025685daca3848bbbdfd65bda489c1dc 100644 (file)
@@ -84,7 +84,7 @@ private:
     /// Transient parent of the tooltip, mandatory on Wayland.
     QWindow* m_transientParent;
 
-    DolphinFileMetaDataWidget* m_fileMetaDataWidget;
+    QScopedPointer<DolphinFileMetaDataWidget> m_fileMetaDataWidget;
     QScopedPointer<KToolTipWidget> m_tooltipWidget;
 
     bool m_toolTipRequested;