Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Merge pull request #9335 from qgis/backport-9328-on-release-3_4
Backport #9328 on release-3_4
- Loading branch information
Showing
with
9 additions
and
1 deletion.
-
+9
−1
src/analysis/vector/geometry_checker/qgsfeaturepool.cpp
|
@@ -38,7 +38,15 @@ QgsFeaturePool::QgsFeaturePool( QgsVectorLayer *layer ) |
|
|
|
|
|
bool QgsFeaturePool::getFeature( QgsFeatureId id, QgsFeature &feature, QgsFeedback *feedback ) |
|
|
{ |
|
|
QgsReadWriteLocker locker( mCacheLock, QgsReadWriteLocker::Read ); |
|
|
// Why is there a write lock acquired here? Weird, we only want to read a feature from the cache, right? |
|
|
// A method like `QCache::object(const Key &key) const` certainly would not modify its internals. |
|
|
// Mmmh. What if reality was different? |
|
|
// If one reads the docs very, very carefully one will find the term "reentrant" in the |
|
|
// small print of the QCache docs. This is the hint that reality is different. |
|
|
// |
|
|
// https://bugreports.qt.io/browse/QTBUG-19794 |
|
|
|
|
|
QgsReadWriteLocker locker( mCacheLock, QgsReadWriteLocker::Write ); |
|
|
QgsFeature *cachedFeature = mFeatureCache.object( id ); |
|
|
if ( cachedFeature ) |
|
|
{ |
|
|