diff options
Diffstat (limited to 'src/zenstore/blockstore.cpp')
| -rw-r--r-- | src/zenstore/blockstore.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/zenstore/blockstore.cpp b/src/zenstore/blockstore.cpp index 0fee18420..337a5f8e0 100644 --- a/src/zenstore/blockstore.cpp +++ b/src/zenstore/blockstore.cpp @@ -163,7 +163,17 @@ BlockStoreFile::Write(const void* Data, uint64_t Size, uint64_t FileOffset) ZEN_TRACE_CPU("BlockStoreFile::Write"); ZEN_ASSERT(Size + FileOffset <= m_IoBuffer.GetSize()); m_File.Write(Data, Size, FileOffset); - m_CachedFileSize.store(0); + + uint64_t NewSize = FileOffset + Size; + uint64_t CurrentSize = m_CachedFileSize.load(); + while (NewSize > CurrentSize) + { + if (m_CachedFileSize.compare_exchange_strong(CurrentSize, NewSize)) + { + break; + } + } + ZEN_ASSERT(m_CachedFileSize.load() >= NewSize); } void |