Skip to content

Commit e0b8acf

Browse files
committed
perf(discovery): use QStringView for forbidden-name checks
Replace QString::split('.') with indexOf/lastIndexOf to extract the basename and extension without allocating a QList<QString> per file, and hold the slices as QStringView so the comparisons against forbiddenFilenames / forbiddenBasenames / forbiddenExtensions run against zero-copy views into the original QString instead of allocating new QString copies. Signed-off-by: Qoole <2862661+qoole@users.noreply.github.com>
1 parent 6341f80 commit e0b8acf

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

src/libsync/discovery.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,10 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &ent
304304
}
305305

306306
const auto &localName = entries.localEntry.name;
307-
const auto splitName = localName.split('.');
308-
const auto &baseName = splitName.first();
309-
const auto extension = splitName.size() > 1 ? splitName.last() : QString();
307+
const auto firstDotIndex = localName.indexOf(QLatin1Char('.'));
308+
const auto lastDotIndex = localName.lastIndexOf(QLatin1Char('.'));
309+
const auto baseName = firstDotIndex >= 0 ? QStringView(localName).left(firstDotIndex) : QStringView(localName);
310+
const auto extension = lastDotIndex >= 0 ? QStringView(localName).mid(lastDotIndex + 1) : QStringView();
310311
const auto accountCaps = _discoveryData->_account->capabilities();
311312
const auto forbiddenFilenames = accountCaps.forbiddenFilenames();
312313
const auto forbiddenBasenames = accountCaps.forbiddenFilenameBasenames();

0 commit comments

Comments
 (0)