Qt 6.8.3 with BlackBerry 10 (QNX 8 / ARMv7) patches
 
 
 
 
 
 
Go to file
Marc Mutz 6d9d2c4fa8 QFileInfoGatherer: fix race conditions pt.1: abort
Fix a race on the 'abort' variable. While there was a mutex lock around
the code that sets the variable in ~QFileInfoGatherer, there was no
protection in getFileInfos(), where it is read:

   // T:this->thread()  // T:*this
                        // in getFileInfos(), after last mutex.unlock()
   mutex.lock();
   abort = true;        while (!abort...
   // ...               // ...

Fix by making 'abort' an atomic. This means that we can drop the mutex
locker in the destructor, too. We still mostly access 'abort' under
protection of the mutex, because we need to protect other variables that
just happen to be accessed together with 'abort', but we avoid the mutex
lock/unlock on each iteration of the while loop in getFileInfos().

Also cleaned up the logic in run():

- by using the canonical form of condition.wait() (in a loop that
  checks the condition), we can ensure that !path.isEmpty() and avoid
  having to use the updateFiles boolean.
- by checking for abort.load() after we return from
  condition.wait(), we minimise the waiting time for thread
  exit.
- by using different local names, we avoid having to this->qualify members.

Also changed one condition.wakeOne() to wakeAll() for consistency
with fetchExtendedInformation().

Change-Id: If35f338fe774546616ec287c1c37e2c32ed05f1a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: David Faure <faure@kde.org>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2012-09-19 19:54:44 +02:00
bin remove setcepaths.bat 2012-09-11 17:24:15 +02:00
config.tests config.tests/arch: make distclean on the test, not qt 2012-09-14 00:06:41 +02:00
dist SIC: QtPrintSupport - Remove QAbstractPageSetupDialog 2012-09-17 22:08:16 +02:00
doc Add Q_PRINTSUPPORT_EXPORT to qdoc ignores. 2012-09-18 00:59:08 +02:00
examples Doc: Use QStyledItemDelegate and frameless spinboxes in spinbox delegate example 2012-09-18 20:59:03 +02:00
lib Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
mkspecs Build tools in release mode if using -debug-and-release option 2012-09-18 07:45:12 +02:00
qmake fix non-bootstrapped $$system()'s line end conversions on windows 2012-09-18 17:39:50 +02:00
src QFileInfoGatherer: fix race conditions pt.1: abort 2012-09-19 19:54:44 +02:00
tests Pass correct argument to QShortcutEvent ctor in tst_qabstractbutton.cpp 2012-09-19 19:54:44 +02:00
tools configure.exe: Improve help output 2012-09-19 16:12:17 +02:00
util Make plugintest util work on Windows. 2012-08-30 13:51:22 +02:00
.gitattributes Update the git-archive export options 2012-09-07 15:39:31 +02:00
.gitignore Updated .gitignore 2012-08-18 13:59:11 +02:00
.tag Update the git-archive export options 2012-09-07 15:39:31 +02:00
INSTALL Remove Symbian specific code from qtbase. 2012-01-31 07:08:31 +01:00
LGPL_EXCEPTION.txt Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.FDL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
LICENSE.GPL Add the LICENSE.GPL file to the module referenced from license headers 2012-05-20 22:41:08 +02:00
LICENSE.LGPL Update contact information in license headers. 2012-01-23 04:04:33 +01:00
LICENSE.PREVIEW.COMMERCIAL Initial import from the monolithic Qt. 2011-04-27 12:05:43 +02:00
configure use qmake to get PKG_CONFIG in configure script 2012-09-17 21:47:51 +02:00
configure.bat introduce -minimal mode to syncqt and use it for bootstrapping 2012-09-11 17:23:27 +02:00
header.BSD Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.FDL Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.LGPL Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
header.LGPL-ONLY Remove "All rights reserved" line from license headers. 2012-01-30 03:54:59 +01:00
qtbase.pro Install right version of tools when x-compiling. 2012-07-17 12:52:48 +02:00
sync.profile Revert "Move QWindowSystemInterface out of qpa." 2012-08-03 00:38:09 +02:00