From 0282b97c2668cd6b438523a718890ef465eacaf3 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 30 Oct 2013 11:21:20 +0200 Subject: VcsManager: Fix soft assertion when directory is managed by 2 VCS In case 2 VCS manage the same directory, topLevel will be the same for both. Chopping tmpDir gives a wrong directory for the second VC. Change-Id: Ie20c716cf8b713dae0d5d8ecc4c947f1c5029544 Reviewed-by: Knut Petter Svendsen Reviewed-by: Tobias Hunger --- src/plugins/coreplugin/vcsmanager.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 4e2636a908..acfeb9145d 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -277,6 +277,9 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &input const QChar slash = QLatin1Char('/'); const StringVersionControlPairs::const_iterator cend = allThatCanManage.constEnd(); for (StringVersionControlPairs::const_iterator i = allThatCanManage.constBegin(); i != cend; ++i) { + // If topLevel was already cached for another VC, skip this one + if (tmpDir.count() < i->first.count()) + continue; d->cache(i->second, i->first, tmpDir); tmpDir = i->first; const int slashPos = tmpDir.lastIndexOf(slash); -- cgit v1.2.1