QDir: use QString::splitRef on all platforms

... to avoid unnecessary allocations with
both case sensitive and case insensitive paths.

Optimize 4413254ff603fa19f4fa22d4936e69f4a6dbbc2b

Change-Id: I4288831d641f7a0ee67f2efd2f5d4f023df0d39c
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
This commit is contained in:
Anton Kudryavtsev 2016-03-30 17:18:24 +03:00 committed by Jędrzej Nowacki
parent 284016c7e6
commit e8e09918c0

View File

@ -756,17 +756,13 @@ QString QDir::relativeFilePath(const QString &fileName) const
#endif
QString result;
#if defined(Q_OS_WIN)
QStringList dirElts = dir.split(QLatin1Char('/'), QString::SkipEmptyParts);
QStringList fileElts = file.split(QLatin1Char('/'), QString::SkipEmptyParts);
#else
QVector<QStringRef> dirElts = dir.splitRef(QLatin1Char('/'), QString::SkipEmptyParts);
QVector<QStringRef> fileElts = file.splitRef(QLatin1Char('/'), QString::SkipEmptyParts);
#endif
int i = 0;
while (i < dirElts.size() && i < fileElts.size() &&
#if defined(Q_OS_WIN)
dirElts.at(i).toLower() == fileElts.at(i).toLower())
dirElts.at(i).compare(fileElts.at(i), Qt::CaseInsensitive) == 0)
#else
dirElts.at(i) == fileElts.at(i))
#endif