Skip to content

Commit db670cb

Browse files
qoolemgallien
authored andcommitted
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 6907ec3 commit db670cb

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
@@ -303,9 +303,10 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, const Entries &ent
303303
}
304304

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

0 commit comments

Comments
 (0)