From 94d7e1471e0a81b72285795ad91c4f6196157ae4 Mon Sep 17 00:00:00 2001 From: David Hallas Date: Sun, 3 Mar 2019 07:37:52 +0100 Subject: [PATCH] Fixes leak of DolphinFileMetaDataWidget in ToolTipManager 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 | 9 ++++----- src/views/tooltips/tooltipmanager.h | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp index bb2890138a..9e79a8f704 100644 --- a/src/views/tooltips/tooltipmanager.cpp +++ b/src/views/tooltips/tooltipmanager.cpp @@ -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; } diff --git a/src/views/tooltips/tooltipmanager.h b/src/views/tooltips/tooltipmanager.h index f6d2b7304e..63c723f802 100644 --- a/src/views/tooltips/tooltipmanager.h +++ b/src/views/tooltips/tooltipmanager.h @@ -84,7 +84,7 @@ private: /// Transient parent of the tooltip, mandatory on Wayland. QWindow* m_transientParent; - DolphinFileMetaDataWidget* m_fileMetaDataWidget; + QScopedPointer m_fileMetaDataWidget; QScopedPointer m_tooltipWidget; bool m_toolTipRequested;