[iostreams] skip bug (repost)
I ran into a problem when using restrict on a file_source. The problem
was that it decided that the stream wasn't seekable and called the
version of skip that reads a character at a time until it gets to the
requested offset, instead of just calling seek.
The code was similar to this:
namespace io = boost::iostreams;
std::string filename;
io::filtering_istream rstr(io::restrict(io::file_source(filename),
10, 100));
I've attached a patch that solved my problem. It was checking to see if
the device was seekable (which means input_seekable and
output_seekable), but since it was an input device, it was just
input_seekable.
Phillip Seaver
--- skip.hpp.orig 2007-03-20 16:20:55.253000000 -0400
+++ skip.hpp 2007-03-20 16:11:51.096750000 -0400
@@ -67,7 +67,17 @@
void skip(Device& dev, stream_offset off)
{
typedef typename mode_of<Device>::type mode;
- detail::skip(dev, off, is_convertible
Phillip Seaver wrote:
I ran into a problem when using restrict on a file_source. The problem was that it decided that the stream wasn't seekable and called the version of skip that reads a character at a time until it gets to the requested offset, instead of just calling seek.
The code was similar to this:
namespace io = boost::iostreams;
std::string filename; io::filtering_istream rstr(io::restrict(io::file_source(filename), 10, 100));
I've attached a patch that solved my problem. It was checking to see if the device was seekable (which means input_seekable and output_seekable), but since it was an input device, it was just input_seekable.
Phillip Seaver
Can you file a bug in Trac for this. That seems to be the current recommended procedure for bug reporting now. http://svn.boost.org/trac/boost/
participants (2)
-
eg
-
Phillip Seaver