diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2014-07-13 16:22:49 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2014-07-13 17:07:52 +0200 |
commit | e7665fd8e41176db517465b7732d53e3e29be876 (patch) | |
tree | 65df4c0bf66c97adea1235231ee6f3c999efd010 | |
parent | 12a4db710e0e663741e239d76ffe4625e94dace2 (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.cpp | 4 |
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; |