Opened 10 years ago
Closed 10 years ago
#7498 closed Bugs (invalid)
archive::binary_iarchive failure loading map<string,string>
Reported by: | Owned by: | Robert Ramey | |
---|---|---|---|
Milestone: | To Be Determined | Component: | serialization |
Version: | Boost 1.51.0 | Severity: | Problem |
Keywords: | binary serialize map string | Cc: |
Description
I create two std::map<std::string, std::string> instances, one of which having two dozen contents, the other default-initialized. I serialize the former using boost::archive::binary_oarchive and load it into the latter using boost::archive::binary_iarchive.
// This Win32-specific test creates a std::map from strings to strings and // then serializes it to a file. We then attempt to desearialize from that // file. On boost_1_45_0 and boost_1_51_0 for Win32 this testcase fails on // our company's secondary build machine.
/* At the top of the call stack (see attachment for context), std::streamsize s = static_cast<std::streamsize>(count / sizeof(Elem)); std::streamsize scount = m_sb.sgetn( static_cast<Elem *>(address), s ); if(scount != s) boost::serialization::throw_exception( archive_exception(archive_exception::input_stream_error) ); `scount` is 0, `s` is 8. It's trying to load a size_type, presumably for a string length or a map length. */
Attachments (1)
Change History (4)
by , 10 years ago
Attachment: | test_binary_archive_with_map.cpp added |
---|
comment:1 by , 10 years ago
Severity: | Showstopper → Problem |
---|
comment:2 by , 10 years ago
comment:3 by , 10 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
Basically it's a user error. I concede that it's something I would like to see detected automatically, but I've never figured out a way to do this. Sorry about this.
Robert Ramey
Note:
See TracTickets
for help on using tickets.
Opening the streams with std::ios::binary fixes the problem.