diff --git a/src/plugins/coreplugin/vcsmanager.cpp b/src/plugins/coreplugin/vcsmanager.cpp index 1345aca4eaa568533ace383d6f9b9a8f1a251653..d58a678d468849bb5c65a1228e4fedebc864646e 100644 --- a/src/plugins/coreplugin/vcsmanager.cpp +++ b/src/plugins/coreplugin/vcsmanager.cpp @@ -271,14 +271,18 @@ IVersionControl* VcsManager::findVersionControlForDirectory(const QString &input // Register Vcs(s) with the cache QString tmpDir = QFileInfo(directory).canonicalFilePath(); - const QChar slash = QLatin1Char('/'); - const StringVersionControlPairs::const_iterator cend = allThatCanManage.constEnd(); - for (StringVersionControlPairs::const_iterator i = allThatCanManage.constBegin(); i != cend; ++i) { - d->cache(i->second, i->first, tmpDir); - tmpDir = i->first; - const int slashPos = tmpDir.lastIndexOf(slash); - if (slashPos >= 0) - tmpDir.truncate(slashPos); + // directory might refer to a historical directory which doesn't exist. + // In this case, don't cache it. + if (!tmpDir.isEmpty()) { + const QChar slash = QLatin1Char('/'); + const StringVersionControlPairs::const_iterator cend = allThatCanManage.constEnd(); + for (StringVersionControlPairs::const_iterator i = allThatCanManage.constBegin(); i != cend; ++i) { + d->cache(i->second, i->first, tmpDir); + tmpDir = i->first; + const int slashPos = tmpDir.lastIndexOf(slash); + if (slashPos >= 0) + tmpDir.truncate(slashPos); + } } // return result