summaryrefslogtreecommitdiff
path: root/src/ByteArrayDiskWriter.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-11-17 12:07:24 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-11-17 12:07:24 +0000
commitb0029fa4bfe3e92ff42aef657f92fa38d007f894 (patch)
treeeb717d06265e2bdc071eec6af41aede59e1b2815 /src/ByteArrayDiskWriter.cc
parent644f707519f74cafc04925379be0b3f60f3939be (diff)
2008-11-17 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
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
Diffstat (limited to 'src/ByteArrayDiskWriter.cc')
-rw-r--r--src/ByteArrayDiskWriter.cc14
1 files changed, 11 insertions, 3 deletions
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