diff options
author | vng <viktor.govako@gmail.com> | 2011-09-08 16:12:36 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:23:25 +0300 |
commit | bd75e193c049cd8c73289765ff4d28d5da357492 (patch) | |
tree | 8d9a0dddb290504c02084147b064f499bdf56d7d /coding/file_writer.cpp | |
parent | 0c3352b86446d6a2d148029dd6c7351c712d6555 (diff) |
Fix using of FilesContainerR, FilesContainerW.
Note! FilesContainerW::GetWriter can reallocate file on disk.
Diffstat (limited to 'coding/file_writer.cpp')
-rw-r--r-- | coding/file_writer.cpp | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/coding/file_writer.cpp b/coding/file_writer.cpp index 5194eb9b5c..10388d7c9b 100644 --- a/coding/file_writer.cpp +++ b/coding/file_writer.cpp @@ -4,20 +4,26 @@ #include "../../base/start_mem_debug.hpp" -FileWriter::FileWriter(FileWriter const & rhs) : Writer(*this) +FileWriter::FileWriter(FileWriter const & rhs) +: Writer(*this), m_bTruncOnClose(rhs.m_bTruncOnClose) { m_pFileData.swap(const_cast<FileWriter &>(rhs).m_pFileData); } -FileWriter::FileWriter(string const & fileName, FileWriter::Op op) - : m_pFileData(new fdata_t(fileName, static_cast<fdata_t::Op>(op))) +FileWriter::FileWriter(string const & fileName, FileWriter::Op op, bool bTruncOnClose) +: m_pFileData(new fdata_t(fileName, static_cast<fdata_t::Op>(op))), m_bTruncOnClose(bTruncOnClose) { } FileWriter::~FileWriter() { if (m_pFileData) + { Flush(); + + if (m_bTruncOnClose) + m_pFileData->Truncate(Pos()); + } } int64_t FileWriter::Pos() const @@ -51,11 +57,6 @@ void FileWriter::Flush() m_pFileData->Flush(); } -void FileWriter::Truncate(uint64_t sz) -{ - m_pFileData->Truncate(sz); -} - void FileWriter::DeleteFileX(string const & fName) { my::DeleteFileX(fName); |