aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-03-13 10:33:40 +0100
committerGitHub Enterprise <[email protected]>2024-03-13 10:33:40 +0100
commit5fd1bdfafcd1e44162a1a4a978de775660c378a6 (patch)
treeb92b9cc595477075bd02320d0948c2f11e0c0717 /src/zenserver
parentupdates to signing (diff)
downloadzen-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.cpp10
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