diff --git a/include/libtorrent/storage.hpp b/include/libtorrent/storage.hpp index 6ef03491a..5fe69926d 100644 --- a/include/libtorrent/storage.hpp +++ b/include/libtorrent/storage.hpp @@ -173,7 +173,7 @@ namespace libtorrent error_code const& error() const { return m_error; } std::string const& error_file() const { return m_error_file; } - void clear_error() { m_error = error_code(); m_error_file.resize(0); } + virtual void clear_error() { m_error = error_code(); m_error_file.resize(0); } mutable error_code m_error; mutable std::string m_error_file; diff --git a/src/disk_io_thread.cpp b/src/disk_io_thread.cpp index 1e510e3fe..2a37f6ab7 100644 --- a/src/disk_io_thread.cpp +++ b/src/disk_io_thread.cpp @@ -684,18 +684,18 @@ namespace libtorrent l.unlock(); if (iov) { - p.storage->write_impl(iov, p.piece, (std::min)( + int ret = p.storage->write_impl(iov, p.piece, (std::min)( i * m_block_size, piece_size) - buffer_size, iov_counter); iov_counter = 0; - ++num_write_calls; + if (ret > 0) ++num_write_calls; } else { TORRENT_ASSERT(buf); file::iovec_t b = { buf.get(), buffer_size }; - p.storage->write_impl(&b, p.piece, (std::min)( + int ret = p.storage->write_impl(&b, p.piece, (std::min)( i * m_block_size, piece_size) - buffer_size, 1); - ++num_write_calls; + if (ret > 0) ++num_write_calls; } l.lock(); ++m_cache_stats.writes;