diff --git a/src/core/kprotocolinfofactory.cpp b/src/core/kprotocolinfofactory.cpp --- a/src/core/kprotocolinfofactory.cpp +++ b/src/core/kprotocolinfofactory.cpp @@ -71,10 +71,13 @@ { QMutexLocker locker(&m_mutex); + // avoid filling the cache twice in succession + const bool wereAllProtocolsLoaded = m_allProtocolsLoaded; + // fill cache, if not already done and use it fillCache(); KProtocolInfoPrivate *info = m_cache.value(protocol); - if (!info) { + if (!info && wereAllProtocolsLoaded) { // Unknown protocol! Maybe it just got installed and our cache is out of date? qCDebug(KIO_CORE) << "Refilling KProtocolInfoFactory cache in the hope to find" << protocol; m_allProtocolsLoaded = false;