Subject: [Boost-bugs] [Boost C++ Libraries] #2522: iostreams/stream_offset_64bit_test fails on QNX 6.4.0
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2008-11-21 11:13:26
#2522: iostreams/stream_offset_64bit_test fails on QNX 6.4.0
------------------------------------------------------+---------------------
Reporter: Niklas Angare <li51ckf02_at_[hidden]> | Owner: turkanis
Type: Bugs | Status: new
Milestone: Boost 1.38.0 | Component: iostreams
Version: Boost Development Trunk | Severity: Problem
Keywords: |
------------------------------------------------------+---------------------
...with the Dinkumware 5 library.
It fails on the first iteration and reports this:[[BR]]
* sizeof(fpos_t) = 16[[BR]]
* sizeof(streamoff) = 4[[BR]]
* sizeof(stream_offset) = 8[[BR]]
...
The constructor of std::streampos (fpos<_Mbstatet>) puts the value in a
streamoff so the most significant 32 bits get chopped off.
Defining BOOST_IOSTREAMS_HAS_DINKUMWARE_FPOS results in this:[[BR]]
positioning.hpp: In function 'std::streampos
boost::iostreams::offset_to_position(boost::iostreams::stream_offset)':[[BR]]
positioning.hpp:52: error: no matching function for call to
'std::fpos<_Mbstatet>::fpos(std::mbstate_t,
boost::iostreams::stream_offset&)'[[BR]]
iosfwd:32: note: candidates are: std::fpos<_Statetype>::fpos(_Statetype,
std::fpos_t) [with _Statetype = _Mbstatet][[BR]]
iosfwd:27: note:
std::fpos<_Statetype>::fpos(std::streamoff) [with _Statetype =
_Mbstatet][[BR]]
iosfwd:23: note: std::fpos<_Mbstatet>::fpos(const
std::fpos<_Mbstatet>&)
std::fpos_t is defined like this:[[BR]]
struct _Fpost {[[BR]]
_Off64t _Off;[[BR]]
_Mbstatet _Wstate;[[BR]]
}
I wrote this simple test:[[BR]]
std::fpos_t fpos = { 100000000000LL, std::mbstate_t() };[[BR]]
std::streampos pos(std::mbstate_t(), fpos);[[BR]]
std::cout << _FPOSOFF(pos.seekpos()) << std::endl;
It prints 100 billion. Is there a better way to initialize fpos_t? I'm not
sure it's correct to use the default value for mbstate_t but
offset_to_position() currently does it.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/2522> 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:49:59 UTC