Subject: [Boost-bugs] [Boost C++ Libraries] #10561: Bugs in dual seekable mode
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2014-09-29 14:16:45
#10561: Bugs in dual seekable mode
------------------------------+-----------------------
Reporter: jlodos@⦠| Owner: turkanis
Type: Bugs | Status: new
Milestone: To Be Determined | Component: iostreams
Version: Boost 1.56.0 | Severity: Problem
Keywords: |
------------------------------+-----------------------
Currently there are no tests for dual seekable streams. So the first thing
to do is to add some tests. See dual_seekable_test.cpp attached.
These tests uncover the following bugs:
1. The functions test_seekable_in_chars and test_seekable_in_chunks in
test/detail/verification.hpp use seekp in several places where seekg
should be used. This has no effect when there is a single head but does
not work when the stream is dual seekable. A new verification function
test_dual_seekable was added and tested. See attached verification.hpp.
2. indirect_streambuf::seek_impl does not work for dual seeking. The
problem is that both heads are modified for both input and output
operations. Since the modification is the same (just resetting the
pointers) everything works when there is a single head. This is a
duplicate of https://svn.boost.org/trac/boost/ticket/7681. Solved in the
attached indirect_streambuf.hpp
3. The function shared_buffer() does not consider dual_seekable stream
buffers as shared. Solved in the attached indirect_streambuf.hpp
4. The function init_put_area() does not consider the existing input
position. This is a duplicate of
https://svn.boost.org/trac/boost/ticket/8572. Solved in the attached
indirect_streambuf.hpp
With the attached versions of verification.hpp and indirect_streambuf.hpp
all previously existing tests passed. I recommend adding the new tests in
dual_seekable_test.cpp.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/10561> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:17 UTC