diff --git a/src/panels/information/kloadmetadatathread.cpp b/src/panels/information/kloadmetadatathread.cpp index 5886775b67..e95aca4045 100644 --- a/src/panels/information/kloadmetadatathread.cpp +++ b/src/panels/information/kloadmetadatathread.cpp @@ -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() diff --git a/src/panels/information/kmetadatawidget.cpp b/src/panels/information/kmetadatawidget.cpp index 14a784af46..ebcaca211c 100644 --- a/src/panels/information/kmetadatawidget.cpp +++ b/src/panels/information/kmetadatawidget.cpp @@ -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