diff --git a/include/boost/serialization/vector.hpp b/include/boost/serialization/vector.hpp index beca8f8c..b232c14e 100644 --- a/include/boost/serialization/vector.hpp +++ b/include/boost/serialization/vector.hpp @@ -29,6 +29,12 @@ #include #include +// default is being compatible with version 1.35 files, not 1.34.1 files +#ifndef BOOST_SERIALIZATION_VECTOR_VERSION +#define BOOST_SERIALIZATION_VECTOR_VERSION 4 +#endif + + namespace boost { namespace serialization { @@ -77,7 +83,7 @@ inline void save( ){ const collection_size_type count(t.size()); ar << BOOST_SERIALIZATION_NVP(count); - if(3 < ar.get_library_version()) { + if(BOOST_SERIALIZATION_VECTOR_VERSION < ar.get_library_version()) { const unsigned int item_version = version::value; ar << BOOST_SERIALIZATION_NVP(item_version); } @@ -96,7 +102,7 @@ inline void load( ar >> BOOST_SERIALIZATION_NVP(count); t.resize(count); unsigned int item_version=0; - if(3 < ar.get_library_version()) + if(BOOST_SERIALIZATION_VECTOR_VERSION < ar.get_library_version()) ar >> BOOST_SERIALIZATION_NVP(item_version); if (!t.empty()) ar >> make_array(detail::get_data(t),t.size()); diff --git a/include/boost/serialization/vector_134.hpp b/include/boost/serialization/vector_134.hpp new file mode 100644 index 00000000..bbb709c7 --- /dev/null +++ b/include/boost/serialization/vector_134.hpp @@ -0,0 +1,20 @@ +#ifndef BOOST_SERIALIZATION_VECTOR_134_HPP +#define BOOST_SERIALIZATION_VECTOR_134_HPP + +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 +// vector_134.hpp: backwards compatibility with 1.34.1 files + +// (C) Copyright 2008 Matthias Troyer + + +#ifdef BOOST_SERIALIZATION_VECTOR_VERSION +#if BOOST_SERIALIZATION_VECTOR_VERSION != 3 +#error Boost.Serialization cannot be compatible with both 1.34.1. and 1.35 files. Please include boost/serialization/vector_134.hpp before vector.hpp to be compatible with 1.34.1 files +#endif +#else +#define BOOST_SERIALIZATION_VECTOR_VERSION 3 +#endif + +#include + +#endif // BOOST_SERIALIZATION_VECTOR_134_HPP diff --git a/src/basic_archive.cpp b/src/basic_archive.cpp index ca197b6e..0bcffaca 100644 --- a/src/basic_archive.cpp +++ b/src/basic_archive.cpp @@ -54,9 +54,13 @@ ARCHIVE_SIGNATURE(){ // 3 - numerous changes - can't guarentee compatibility with previous versions // 4 - Boost 1.34 // added register_version to properly support versioning for collections +// 5 - Boost 1.36 +// changed serialization of collections: adding version even for primitive +// types caused backwards compatibility breaking change in 1.35 + BOOST_ARCHIVE_DECL(unsigned char) ARCHIVE_VERSION(){ - return 4; + return 5; } } // namespace archive