diff options
| author | Dan Engelbrecht <[email protected]> | 2024-03-13 10:33:40 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-03-13 10:33:40 +0100 |
| commit | 5fd1bdfafcd1e44162a1a4a978de775660c378a6 (patch) | |
| tree | b92b9cc595477075bd02320d0948c2f11e0c0717 /src/zenserver | |
| parent | updates to signing (diff) | |
| download | zen-5fd1bdfafcd1e44162a1a4a978de775660c378a6.tar.xz zen-5fd1bdfafcd1e44162a1a4a978de775660c378a6.zip | |
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
Diffstat (limited to 'src/zenserver')
| -rw-r--r-- | src/zenserver/projectstore/projectstore.cpp | 10 |
1 files changed, 2 insertions, 8 deletions
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 |