summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2019-06-26 07:24:18 +0200
committerMarc Mutz <marc.mutz@kdab.com>2019-06-30 16:50:32 +0000
commit51bcc7e07e2bb5b42bb200dcd5269e9e9e2fe240 (patch)
treece9766a8ad5ab40d4213efb4654cb4e5751d0353
parent4cc6e1419294a729e53d698bace2254903c1429b (diff)
QFreeList: fix memory order on block deletion
Blocks are likely to have been created in a differnt thread from the one performing their deletion, so we need an acquire fence. The rest of the atomics use in the class looks ok, but nevertheless warrants a deeper analysis. Change-Id: I1571ded3a06695b0d58b5bf1d80d6283ac21f959 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 6fa34930c23c7494a3f2703777f46794ff091e2b)
-rw-r--r--src/corelib/tools/qfreelist_p.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h
index 2f98cf5cc1..665b651e69 100644
--- a/src/corelib/tools/qfreelist_p.h
+++ b/src/corelib/tools/qfreelist_p.h
@@ -218,7 +218,7 @@ template <typename T, typename ConstantsType>
inline QFreeList<T, ConstantsType>::~QFreeList()
{
for (int i = 0; i < ConstantsType::BlockCount; ++i)
- delete [] _v[i].load();
+ delete [] _v[i].loadAcquire();
}
template <typename T, typename ConstantsType>