From b0029fa4bfe3e92ff42aef657f92fa38d007f894 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 17 Nov 2008 12:07:24 +0000 Subject: 2008-11-17 Tatsuhiro Tsujikawa Rewritten ByteArrayDiskWriter::size() using seekg() and tellg(). Removed const qualifier from DiskWriter::size(). * src/AbstractDiskWriter.cc * src/AbstractDiskWriter.h * src/ByteArrayDiskWriter.cc * src/ByteArrayDiskWriter.h * src/DiskWriter.h * test/ByteArrayDiskWriterTest.cc --- src/ByteArrayDiskWriter.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/ByteArrayDiskWriter.cc') diff --git a/src/ByteArrayDiskWriter.cc b/src/ByteArrayDiskWriter.cc index 011ed25b..dbe22cc3 100644 --- a/src/ByteArrayDiskWriter.cc +++ b/src/ByteArrayDiskWriter.cc @@ -66,9 +66,10 @@ void ByteArrayDiskWriter::openExistingFile(const std::string& filename, void ByteArrayDiskWriter::writeData(const unsigned char* data, size_t dataLength, off_t position) { - if(size() < (uint64_t)position) { - buf.seekp(size(), std::ios::beg); - for(uint64_t i = size(); i < (uint64_t)position; ++i) { + uint64_t length = size(); + if(length < (uint64_t)position) { + buf.seekp(length, std::ios::beg); + for(uint64_t i = length; i < (uint64_t)position; ++i) { buf.put('\0'); } } else { @@ -85,4 +86,11 @@ ssize_t ByteArrayDiskWriter::readData(unsigned char* data, size_t len, off_t pos return buf.gcount(); } +uint64_t ByteArrayDiskWriter::size() +{ + buf.seekg(0, std::ios::end); + buf.clear(); + return buf.tellg(); +} + } // namespace aria2 -- cgit