summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2014-07-13 16:22:49 +0200
committerGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2014-07-13 17:07:52 +0200
commite7665fd8e41176db517465b7732d53e3e29be876 (patch)
tree65df4c0bf66c97adea1235231ee6f3c999efd010
parent12a4db710e0e663741e239d76ffe4625e94dace2 (diff)
Revert "QRegularExpression: lock a mutex only if there's actual work to do"
Blunder -- two threads may step into this method together, both see not studied, and both study (with one leaking its study data). This reverts commit 5fbd787cf9a72621d66604a4898f06ea4365226e. Change-Id: Ia746925abcad1e43adf4f6f1d495b018de022b07 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
-rw-r--r--src/corelib/tools/qregularexpression.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/corelib/tools/qregularexpression.cpp b/src/corelib/tools/qregularexpression.cpp
index 4babfe1e19..259cfaba7e 100644
--- a/src/corelib/tools/qregularexpression.cpp
+++ b/src/corelib/tools/qregularexpression.cpp
@@ -1149,11 +1149,11 @@ void QRegularExpressionPrivate::optimizePattern(OptimizePatternOption option)
{
Q_ASSERT(compiledPattern);
+ QMutexLocker lock(&mutex);
+
if (studyData.load()) // already optimized
return;
- QMutexLocker lock(&mutex);
-
if ((option == LazyOptimizeOption) && (++usedCount != qt_qregularexpression_optimize_after_use_count))
return;