From: David Hallas Date: Sun, 3 Mar 2019 06:37:52 +0000 (+0100) Subject: Fixes leak of DolphinFileMetaDataWidget in ToolTipManager X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/94d7e1471e0a81b72285795ad91c4f6196157ae4 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 --- diff --git a/src/views/tooltips/tooltipmanager.cpp b/src/views/tooltips/tooltipmanager.cpp index bb2890138..9e79a8f70 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 f6d2b7304..63c723f80 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;