diff --git a/src/views/versioncontrol/updateitemstatesthread.cpp b/src/views/versioncontrol/updateitemstatesthread.cpp index ad53517ae5..e6a0f68fa1 100644 --- a/src/views/versioncontrol/updateitemstatesthread.cpp +++ b/src/views/versioncontrol/updateitemstatesthread.cpp @@ -26,22 +26,26 @@ UpdateItemStatesThread::~UpdateItemStatesThread() void UpdateItemStatesThread::run() { Q_ASSERT(!m_itemStates.isEmpty()); - Q_ASSERT(m_plugin); + if (!m_plugin) { + return; + } QMutexLocker pluginLocker(m_globalPluginMutex); QMap>::iterator it = m_itemStates.begin(); - for (; it != m_itemStates.end(); ++it) { + for (; it != m_itemStates.end() && m_plugin; ++it) { if (m_plugin->beginRetrieval(it.key())) { QVector &items = it.value(); const int count = items.count(); - for (int i = 0; i < count; ++i) { + for (int i = 0; i < count && m_plugin; ++i) { const KFileItem &item = items.at(i).first; const KVersionControlPlugin::ItemVersion version = m_plugin->itemVersion(item); items[i].second = version; } } - m_plugin->endRetrieval(); + if (m_plugin) { + m_plugin->endRetrieval(); + } } } diff --git a/src/views/versioncontrol/updateitemstatesthread.h b/src/views/versioncontrol/updateitemstatesthread.h index 24f060d266..5504360109 100644 --- a/src/views/versioncontrol/updateitemstatesthread.h +++ b/src/views/versioncontrol/updateitemstatesthread.h @@ -11,6 +11,7 @@ #include "views/versioncontrol/versioncontrolobserver.h" #include +#include #include /** @@ -41,7 +42,7 @@ protected: private: QMutex *m_globalPluginMutex; // Protects the m_plugin globally - KVersionControlPlugin *m_plugin; + QPointer m_plugin; QMap> m_itemStates; };