From 0b3cc1f2f3f4f123dc71089a98996a8bd74647a7 Mon Sep 17 00:00:00 2001 From: Arsentiy Milchakov Date: Mon, 12 Aug 2019 18:01:55 +0300 Subject: [PATCH] [coding] buffered file writer review fixes --- coding/buffered_file_writer.cpp | 9 +++++---- coding/file_writer.cpp | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/coding/buffered_file_writer.cpp b/coding/buffered_file_writer.cpp index edf98e4f62..60df29197b 100644 --- a/coding/buffered_file_writer.cpp +++ b/coding/buffered_file_writer.cpp @@ -2,18 +2,20 @@ #include "coding/internal/file_data.hpp" +#include "base/assert.hpp" + BufferedFileWriter::BufferedFileWriter(std::string const & fileName, Op operation /* = OP_WRITE_TRUNCATE */, size_t bufferSize /* = 4096 */) : FileWriter(fileName, operation) { + CHECK_GREATER(bufferSize, 0, ()); m_buf.reserve(bufferSize); } BufferedFileWriter::~BufferedFileWriter() { DropBuffer(); - GetFileData().Flush(); } void BufferedFileWriter::Seek(uint64_t pos) @@ -44,8 +46,7 @@ void BufferedFileWriter::Write(void const * p, size_t size) { auto const copyCount = m_buf.capacity() - m_buf.size(); std::copy(src, src + copyCount, std::back_inserter(m_buf)); - FileWriter::Write(m_buf.data(), m_buf.size()); - m_buf.clear(); + DropBuffer(); src += copyCount; size -= copyCount; } @@ -70,6 +71,6 @@ void BufferedFileWriter::DropBuffer() if (m_buf.empty()) return; - GetFileData().Write(m_buf.data(), m_buf.size()); + FileWriter::Write(m_buf.data(), m_buf.size()); m_buf.clear(); } diff --git a/coding/file_writer.cpp b/coding/file_writer.cpp index 0880526f27..f8e06f6c82 100644 --- a/coding/file_writer.cpp +++ b/coding/file_writer.cpp @@ -12,7 +12,8 @@ FileWriter::FileWriter(string const & fileName, FileWriter::Op op) FileWriter::~FileWriter() { - m_pFileData->Flush(); + // Note: FileWriter::Flush will be called (like non virtual method). + Flush(); } uint64_t FileWriter::Pos() const