From 5fd1bdfafcd1e44162a1a4a978de775660c378a6 Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Wed, 13 Mar 2024 10:33:40 +0100 Subject: fix potential partially written files (#2) * Make sure WriteFile() does not leave incomplete files * use TemporaryFile and MoveTemporaryIntoPlace to avoid leaving partial files on error --- src/zenserver/projectstore/projectstore.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'src/zenserver/projectstore/projectstore.cpp') diff --git a/src/zenserver/projectstore/projectstore.cpp b/src/zenserver/projectstore/projectstore.cpp index b255ac9e6..47f8b7357 100644 --- a/src/zenserver/projectstore/projectstore.cpp +++ b/src/zenserver/projectstore/projectstore.cpp @@ -817,10 +817,7 @@ ProjectStore::Oplog::Write() ZEN_INFO("persisting config for oplog '{}' in project '{}' to {}", m_OplogId, m_OuterProject->Identifier, StateFilePath); - BasicFile Blob; - Blob.Open(StateFilePath, BasicFile::Mode::kTruncate); - Blob.Write(Mem.Data(), Mem.Size(), 0); - Blob.Flush(); + WriteFile(StateFilePath, IoBuffer(IoBuffer::Wrap, Mem.GetData(), Mem.GetSize())); } void @@ -1489,10 +1486,7 @@ ProjectStore::Project::Write() ZEN_INFO("persisting config for project '{}' to {}", Identifier, ProjectStateFilePath); - BasicFile Blob; - Blob.Open(ProjectStateFilePath, BasicFile::Mode::kTruncate); - Blob.Write(Mem.Data(), Mem.Size(), 0); - Blob.Flush(); + WriteFile(ProjectStateFilePath, IoBuffer(IoBuffer::Wrap, Mem.GetData(), Mem.GetSize())); } void -- cgit v1.2.3