iostreams::restrict doesn't work on an iostreams::file_source
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 both input_seekable and output_seekable), but since it was an input device, it was just input_seekable.
Change History
(6)
Owner: |
set to Douglas Gregor
|
Component: |
None → iostreams
|
Owner: |
changed from Douglas Gregor to Marshall Clow
|
Owner: |
Marshall Clow removed
|
Owner: |
set to Jonathan Turkanis
|
Resolution: |
→ fixed
|
Status: |
new → closed
|
fixed in [42305] in branches/iostreams_dev, to be merged into trunk shortly.