From f02a16df0dfa0177ee1a3966cf2df028bd4089ab Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Thu, 5 Sep 2024 16:55:34 +0200 Subject: fix oplog instance leak in project store gc (#145) --- src/zenserver/projectstore/projectstore.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/zenserver/projectstore/projectstore.cpp') diff --git a/src/zenserver/projectstore/projectstore.cpp b/src/zenserver/projectstore/projectstore.cpp index 984b749d0..7962c8cd1 100644 --- a/src/zenserver/projectstore/projectstore.cpp +++ b/src/zenserver/projectstore/projectstore.cpp @@ -5428,7 +5428,7 @@ public: }); ProjectStore::Oplog* Oplog = nullptr; - auto __ = MakeGuard([this, Oplog]() { + auto __ = MakeGuard([this, &Oplog]() { if (Oplog != nullptr && m_OplogWithUpdateCapture == nullptr) { delete Oplog; @@ -5503,10 +5503,14 @@ public: { ProjectStore::Oplog* Oplog = new ProjectStore::Oplog(m_OplogId, m_Project.Get(), m_Project->m_CidStore, m_OplogBasePath, std::filesystem::path{}); + auto __ = MakeGuard([Oplog]() { + if (Oplog != nullptr) + { + delete Oplog; + } + }); Oplog->Read(); - RwLock::SharedLockScope __(Oplog->m_OplogLock); Oplog->GetAttachmentsLocked(m_References, m_ProjectStore.m_Config.StoreAttachmentMetaData); - delete Oplog; } } -- cgit v1.2.3