FilePath: Fix hash function

For better performance, include also the scheme and host in qHash
calculation.

Change-Id: I2a69a128597429b88a71943d248ce038b49285f2
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2023-05-04 21:12:22 +02:00
parent d5329d56b6
commit fb50e35db9

View File

@@ -2072,9 +2072,10 @@ QTCREATOR_UTILS_EXPORT bool operator>=(const FilePath &first, const FilePath &se
QTCREATOR_UTILS_EXPORT size_t qHash(const FilePath &filePath, uint seed) QTCREATOR_UTILS_EXPORT size_t qHash(const FilePath &filePath, uint seed)
{ {
if (filePath.caseSensitivity() == Qt::CaseInsensitive) if (filePath.caseSensitivity() == Qt::CaseSensitive)
return qHash(filePath.path().toCaseFolded(), seed); return qHash(QStringView(filePath.m_data), seed);
return qHash(filePath.path(), seed); const size_t schemeHostHash = qHash(QStringView(filePath.m_data).mid(filePath.m_pathLen), seed);
return qHash(filePath.path().toCaseFolded(), seed) ^ schemeHostHash;
} }
QTCREATOR_UTILS_EXPORT size_t qHash(const FilePath &filePath) QTCREATOR_UTILS_EXPORT size_t qHash(const FilePath &filePath)