From 5a43ff8d2059e13782a445e03cb1c0fd823672ff Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 18 May 2016 16:59:14 +0100 Subject: [PATCH] refs #646 Fixed race condition between synchronize() and saveToStoreAsync(). --- src/blackmisc/datacache.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/blackmisc/datacache.cpp b/src/blackmisc/datacache.cpp index c306fc7dc..dc97f9432 100644 --- a/src/blackmisc/datacache.cpp +++ b/src/blackmisc/datacache.cpp @@ -405,6 +405,8 @@ namespace BlackMisc void CDataCacheRevision::notifyPendingWrite() { + QMutexLocker lock(&m_mutex); + m_pendingWrite = true; } @@ -420,7 +422,7 @@ namespace BlackMisc { QMutexLocker lock(&m_mutex); - return (m_updateInProgress || beginUpdate({{ key, timestamp }}, false)) && m_timestamps.contains(key); + return (m_updateInProgress || m_pendingWrite || beginUpdate({{ key, timestamp }}, false)) && m_timestamps.contains(key); } std::future CDataCacheRevision::promiseLoadedValue(const QString &key, qint64 currentTimestamp)