--- container_device_old.hpp 2013-10-18 10:09:44.603956332 +1000 +++ container_device.hpp 2013-10-18 10:23:34.416071141 +1000 @@ -13,6 +13,7 @@ #include // BOOST_NO_STDC_NAMESPACE. #include #include // failure. +#include // stream_offset namespace boost { namespace iostreams { namespace example { @@ -113,7 +114,7 @@ pos_ += result; } if (result < n) { - container_.insert(container_.end(), s, s + n); + container_.insert(container_.end(), s + result, s + n); pos_ = container_.size(); } return n; @@ -129,13 +130,13 @@ } else if (way == BOOST_IOS::cur) { next = pos_ + off; } else if (way == BOOST_IOS::end) { - next = container_.size() + off - 1; + next = container_.size() + off; } else { throw BOOST_IOSTREAMS_FAILURE("bad seek direction"); } // Check for errors - if (next < 0 || next >= container_.size()) + if (next < 0 || next > container_.size()) throw BOOST_IOSTREAMS_FAILURE("bad seek offset"); pos_ = next;