summaryrefslogtreecommitdiff
path: root/src/widgets
diff options
context:
space:
mode:
authorBradley T. Hughes <bradley.hughes@nokia.com>2012-01-11 12:47:07 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-12 00:45:19 +0100
commitb409a81da5d0d14b3ac96497f60c1b599bac60a7 (patch)
treedfe6e43c375b3f2163a40b879cc2462b224625ea /src/widgets
parent93a466c6fc3c455dcc9bf1292cc6a2725287a94a (diff)
downloadqtbase-b409a81da5d0d14b3ac96497f60c1b599bac60a7.tar.gz
Ensure proper locking in QFileInfoGatherer
The mutex is used to protect the QFileSystemWatcher instance created by QFileInfoGatherer, except when calling getFileInfos(). Add a locker before using QFileSystemWatcher in this function. Note: it appears that QFileInfoGatherer is misusing QFileSystemWatcher by calling it from multiple threads. QFileSystemWatcher is an event driven class, and as such, not thread-safe. So far, no problems have been reported related to this, so I've left the code as-is. Change-Id: Ib1429d9399e37120acf8e8d3b989b83c4ce24203 Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/dialogs/qfileinfogatherer.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp
index 1e08dbd1a5..bce8b3ecc1 100644
--- a/src/widgets/dialogs/qfileinfogatherer.cpp
+++ b/src/widgets/dialogs/qfileinfogatherer.cpp
@@ -280,10 +280,11 @@ void QFileInfoGatherer::getFileInfos(const QString &path, const QStringList &fil
{
#ifndef QT_NO_FILESYSTEMWATCHER
if (files.isEmpty()
- && !watcher->directories().contains(path)
&& !path.isEmpty()
&& !path.startsWith(QLatin1String("//")) /*don't watch UNC path*/) {
- watcher->addPath(path);
+ QMutexLocker locker(&mutex);
+ if (!watcher->directories().contains(path))
+ watcher->addPath(path);
}
#endif