]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix possible memory leak when invoking KLoadMetaDataThread::cancelAndDelete().
authorPeter Penz <peter.penz19@gmail.com>
Sun, 28 Feb 2010 15:01:33 +0000 (15:01 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Sun, 28 Feb 2010 15:01:33 +0000 (15:01 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1097154

src/panels/information/kloadmetadatathread.cpp
src/panels/information/kmetadatawidget.cpp

index 5886775b67df91189705f1fbe8aec34a9ae4459f..e95aca404588cbd0e2d9766061f07fda799ef307 100644 (file)
@@ -55,11 +55,16 @@ void KLoadMetaDataThread::load(const KUrl::List& urls)
 
 void KLoadMetaDataThread::cancelAndDelete()
 {
-    connect(this, SIGNAL(finished()), this, SLOT(slotFinished()));
-    m_canceled = true;
-    // Setting m_canceled to true will cancel KLoadMetaDataThread::run()
-    // as soon as possible. Afterwards the thread will delete itself
-    // asynchronously inside slotFinished().
+    if (isFinished()) {
+        Q_ASSERT(!isRunning());
+        deleteLater();
+    } else {
+        connect(this, SIGNAL(finished()), this, SLOT(slotFinished()));
+        m_canceled = true;
+        // Setting m_canceled to true will cancel KLoadMetaDataThread::run()
+        // as soon as possible. Afterwards the thread will delete itself
+        // asynchronously inside slotFinished().
+    }
 }
 
 void KLoadMetaDataThread::run()
index 14a784af46fa3476d70d80b814db6b0734c32d37..ebcaca211c89c646d344121c04d749e7a96ee8b0 100644 (file)
@@ -436,6 +436,8 @@ void KMetaDataWidget::Private::slotLoadingFinished()
 
     m_files = m_loadMetaDataThread->files();
 
+    Q_ASSERT(!m_loadMetaDataThread->isRunning());
+    Q_ASSERT(m_loadMetaDataThread->isFinished());
     m_loadMetaDataThread->deleteLater();
     m_loadMetaDataThread = 0;
 #endif