Boost logo

Boost :

Subject: [boost] Boost.Serialization issue loading 1.37 binary archive.
From: Brandon Kohn (blkohn_at_[hidden])
Date: 2011-04-01 14:54:53


I've been using Boost.Serialization for some time, and have found a
break while upgrading to 1.46.1 (from 1.37). The problem seems to be the
size of the integral type which stores

v. 1.37 has:

     return 5;

When saving to the binary_oarchive:

// basic_binary_oarchive.hpp
void save_override(const class_id_type & t, int){
   // upto 32K classes
   const int_least16_t x = t.t;
   * this->This() << x;

1.46.1 has:

void load_override(class_id_type & t, int version){
   library_version_type lvt = this->get_library_version();
   if(boost::archive::library_version_type(7) < lvt){
     this->detail_common_iarchive::load_override(t, version);
   if(boost::archive::library_version_type(6) < lvt){
     int_least16_t x=0;
     * this->This() >> x;
     t = boost::archive::class_id_type(x);
     int x=0;
     * this->This() >> x;
     t = boost::archive::class_id_type(x);

The salient point is that on the load in 1.46.1 an int is used to read
the value which was stored as int_least16_t in version 5 archives. The
trunk seems to have this as well.


Brandon Kohn

Boost list run by bdawes at, gregod at, cpdaniel at, john at