From f61b8fd6a3f9470373023bf30b97eb0eb7aaaf2c Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Fri, 8 Apr 2011 17:33:14 +0200 Subject: [PATCH] VCS: Fix crash in VCSManager --- src/plugins/coreplugin/vcsmanager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index c99bd695833..b68f5bb1e51 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -127,7 +127,7 @@ public: m_vcsInfoList.append(newInfo); QString tmpDir = directory; - while (tmpDir.count() >= topLevel.count()) { + while (tmpDir.count() >= topLevel.count() && tmpDir.count() > 0) { m_cachedMatches.insert(tmpDir, newInfo); int slashPos = tmpDir.lastIndexOf(SLASH); tmpDir = slashPos >= 0 ? tmpDir.left(tmpDir.lastIndexOf(SLASH)) : QString(); @@ -174,7 +174,7 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &direc if (directory.isEmpty()) return 0; - VcsManagerPrivate::VcsInfo * cachedData = m_d->findUpInCache(directory); + VcsManagerPrivate::VcsInfo *cachedData = m_d->findInCache(directory); if (cachedData) { if (topLevelDirectory) *topLevelDirectory = cachedData->topLevel; @@ -186,7 +186,7 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &direc QList<QPair<QString, IVersionControl *> > allThatCanManage; foreach (IVersionControl * versionControl, versionControls) { - QString topLevel = cachedData ? cachedData->topLevel : QString(); + QString topLevel; if (versionControl->managesDirectory(directory, &topLevel)) allThatCanManage.push_back(qMakePair(topLevel, versionControl)); } @@ -196,7 +196,7 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &direc qSort(allThatCanManage.begin(), allThatCanManage.end(), longerThanPath); if (allThatCanManage.isEmpty()) { - m_d->cache(0, cachedData->topLevel, directory); // register that nothing was found! + m_d->cache(0, QString(), directory); // register that nothing was found! // report result; if (topLevelDirectory) -- GitLab