Discovery: Don't rebuild invalidFilname regex each call
authorChristian Kamm <mail@ckamm.de>
Fri, 19 Oct 2018 08:51:25 +0000 (10:51 +0200)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:13 +0000 (10:58 +0100)
src/libsync/discovery.cpp
src/libsync/discoveryphase.h
src/libsync/syncengine.cpp

index 08ae57be589473f3071ac18b38de28a09691964c..df0b95148e506315a24bf30a7c044d3d90278e75 100644 (file)
@@ -157,9 +157,8 @@ bool ProcessDirectoryJob::handleExcluded(const QString &path, bool isDirectory,
 
     // FIXME: move to ExcludedFiles 's regexp ?
     bool isInvalidPattern = false;
-    if (excluded == CSYNC_NOT_EXCLUDED && !_discoveryData->_invalidFilenamePattern.isEmpty()) {
-        const QRegExp invalidFilenameRx(_discoveryData->_invalidFilenamePattern);
-        if (path.contains(invalidFilenameRx)) {
+    if (excluded == CSYNC_NOT_EXCLUDED && !_discoveryData->_invalidFilenameRx.isEmpty()) {
+        if (path.contains(_discoveryData->_invalidFilenameRx)) {
             excluded = CSYNC_FILE_EXCLUDE_INVALID_CHAR;
             isInvalidPattern = true;
         }
index f0dd54619f65767f56370d8a83bad02e06b0481c..1bd9dd06b8ec2708d9dd828274b0e2784199c161 100644 (file)
@@ -169,7 +169,7 @@ public:
     QStringList _selectiveSyncBlackList;
     QStringList _selectiveSyncWhiteList;
     ExcludedFiles *_excludes;
-    QString _invalidFilenamePattern; // FIXME: maybe move in ExcludedFiles
+    QRegExp _invalidFilenameRx; // FIXME: maybe move in ExcludedFiles
     bool _ignoreHiddenFiles = false;
     std::function<bool(const QString &)> _shouldDiscoverLocaly;
 
index 32efc0bf404d194d8edee1bb1ef86b6722bee007..8bd3a68db42bfa665a5bff31f3678c76157661b2 100644 (file)
@@ -587,7 +587,8 @@ void SyncEngine::slotStartDiscovery()
         // version check doesn't make sense for custom servers.
         invalidFilenamePattern = "[\\\\:?*\"<>|]";
     }
-    _discoveryPhase->_invalidFilenamePattern = invalidFilenamePattern;
+    if (!invalidFilenamePattern.isEmpty())
+        _discoveryPhase->_invalidFilenameRx = QRegExp(invalidFilenamePattern);
     _discoveryPhase->_ignoreHiddenFiles = ignoreHiddenFiles();
 
     connect(_discoveryPhase.data(), &DiscoveryPhase::itemDiscovered, this, &SyncEngine::slotItemDiscovered);