diff options
Diffstat (limited to '3rdParty/Boost/src/libs/serialization')
14 files changed, 144 insertions, 222 deletions
diff --git a/3rdParty/Boost/src/libs/serialization/src/archive_exception.cpp b/3rdParty/Boost/src/libs/serialization/src/archive_exception.cpp index 50d326a..d06303f 100644 --- a/3rdParty/Boost/src/libs/serialization/src/archive_exception.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/archive_exception.cpp @@ -13,7 +13,7 @@ #endif #include <exception> -#include <boost/assert.hpp> +//#include <boost/assert.hpp> #include <string> #define BOOST_ARCHIVE_SOURCE @@ -22,6 +22,18 @@ namespace boost { namespace archive { +unsigned int +archive_exception::append(unsigned int l, const char * a){ + while(l < (sizeof(m_buffer) - 1)){ + char c = *a++; + if('\0' == c) + break; + m_buffer[l++] = c; + } + m_buffer[l] = '\0'; + return l; +} + BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) archive_exception::archive_exception( exception_code c, @@ -30,80 +42,81 @@ archive_exception::archive_exception( ) : code(c) { - m_msg = "programming error"; + unsigned int length = 0; switch(code){ case no_exception: - m_msg = "uninitialized exception"; + length = append(length, "uninitialized exception"); break; case unregistered_class: - m_msg = "unregistered class"; + length = append(length, "unregistered class"); if(NULL != e1){ - m_msg += " - "; - m_msg += e1; + length = append(length, " - "); + length = append(length, e1); } break; case invalid_signature: - m_msg = "invalid signature"; + length = append(length, "invalid signature"); break; case unsupported_version: - m_msg = "unsupported version"; + length = append(length, "unsupported version"); break; case pointer_conflict: - m_msg = "pointer conflict"; + length = append(length, "pointer conflict"); break; case incompatible_native_format: - m_msg = "incompatible native format"; + length = append(length, "incompatible native format"); if(NULL != e1){ - m_msg += " - "; - m_msg += e1; + length = append(length, " - "); + length = append(length, e1); } break; case array_size_too_short: - m_msg = "array size too short"; + length = append(length, "array size too short"); break; case input_stream_error: - m_msg = "input stream error"; + length = append(length, "input stream error"); break; case invalid_class_name: - m_msg = "class name too long"; + length = append(length, "class name too long"); break; case unregistered_cast: - m_msg = "unregistered void cast "; - m_msg += (NULL != e1) ? e1 : "?"; - m_msg += "<-"; - m_msg += (NULL != e2) ? e2 : "?"; + length = append(length, "unregistered void cast "); + length = append(length, (NULL != e1) ? e1 : "?"); + length = append(length, "<-"); + length = append(length, (NULL != e2) ? e2 : "?"); break; case unsupported_class_version: - m_msg = "class version "; - m_msg += (NULL != e1) ? e1 : "<unknown class>"; + length = append(length, "class version "); + length = append(length, (NULL != e1) ? e1 : "<unknown class>"); break; case other_exception: // if get here - it indicates a derived exception // was sliced by passing by value in catch - m_msg = "unknown derived exception"; + length = append(length, "unknown derived exception"); break; case multiple_code_instantiation: - m_msg = "code instantiated in more than one module"; + length = append(length, "code instantiated in more than one module"); if(NULL != e1){ - m_msg += " - "; - m_msg += e1; + length = append(length, " - "); + length = append(length, e1); } break; case output_stream_error: - m_msg = "output stream error"; + length = append(length, "output stream error"); break; default: BOOST_ASSERT(false); + length = append(length, "programming error"); break; } } BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) -archive_exception::~archive_exception() throw () {} +archive_exception::~archive_exception() throw() {} BOOST_ARCHIVE_DECL(const char *) archive_exception::what( ) const throw() { - return m_msg.c_str(); + return m_buffer; } BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) archive_exception::archive_exception() : diff --git a/3rdParty/Boost/src/libs/serialization/src/basic_archive.cpp b/3rdParty/Boost/src/libs/serialization/src/basic_archive.cpp index 23e5702..8baf178 100644 --- a/3rdParty/Boost/src/libs/serialization/src/basic_archive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/basic_archive.cpp @@ -70,10 +70,11 @@ BOOST_ARCHIVE_SIGNATURE(){ // 8 - Boost 1.44 // separated version_type into library_version_type and class_version_type // changed version_type to be stored as 8 bits. +// 10- fixed base64 output/input. BOOST_ARCHIVE_DECL(library_version_type) BOOST_ARCHIVE_VERSION(){ - return library_version_type(9); + return library_version_type(11); } } // namespace archive diff --git a/3rdParty/Boost/src/libs/serialization/src/basic_iarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/basic_iarchive.cpp index e9baddd..3a24690 100644 --- a/3rdParty/Boost/src/libs/serialization/src/basic_iarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/basic_iarchive.cpp @@ -81,9 +81,18 @@ class basic_iarchive_impl { ////////////////////////////////////////////////////////////////////// // used to implement the reset_object_address operation. - object_id_type moveable_objects_start; - object_id_type moveable_objects_end; - object_id_type moveable_objects_recent; + struct moveable_objects { + object_id_type start; + object_id_type end; + object_id_type recent; + bool is_pointer; + moveable_objects() : + start(0), + end(0), + recent(0), + is_pointer(false) + {} + } m_moveable_objects; void reset_object_address( const void * new_address, @@ -159,19 +168,20 @@ class basic_iarchive_impl { ////////////////////////////////////////////////////////////////////// // address of the most recent object serialized as a poiner // whose data itself is now pending serialization - void * pending_object; - const basic_iserializer * pending_bis; - version_type pending_version; + struct pending { + void * object; + const basic_iserializer * bis; + version_type version; + pending() : + object(NULL), + bis(NULL), + version(0) + {} + } m_pending; basic_iarchive_impl(unsigned int flags) : m_archive_library_version(BOOST_ARCHIVE_VERSION()), - m_flags(flags), - moveable_objects_start(0), - moveable_objects_end(0), - moveable_objects_recent(0), - pending_object(NULL), - pending_bis(NULL), - pending_version(0) + m_flags(flags) {} ~basic_iarchive_impl(){} void set_library_version(library_version_type archive_library_version){ @@ -200,7 +210,7 @@ class basic_iarchive_impl { //public: void next_object_pointer(void * t){ - pending_object = t; + m_pending.object = t; } void delete_created_pointers(); class_id_type register_type( @@ -224,9 +234,12 @@ class basic_iarchive_impl { inline void basic_iarchive_impl::reset_object_address( - const void * new_address, - const void *old_address + void const * const new_address, + void const * const old_address ){ + if(m_moveable_objects.is_pointer) + return; + // this code handles a couple of situations. // a) where reset_object_address is applied to an untracked object. // In such a case the call is really superfluous and its really an @@ -240,18 +253,18 @@ basic_iarchive_impl::reset_object_address( // of the programmer but we can't detect it - as above. So maybe we // can save a few more people from themselves as above. object_id_type i; - for(i = moveable_objects_recent; i < moveable_objects_end; ++i){ + for(i = m_moveable_objects.recent; i < m_moveable_objects.end; ++i){ if(old_address == object_id_vector[i].address) break; } - for(; i < moveable_objects_end; ++i){ - + for(; i < m_moveable_objects.end; ++i){ + void const * const this_address = object_id_vector[i].address; // calculate displacement from this level // warning - pointer arithmetic on void * is in herently non-portable // but expected to work on all platforms in current usage - if(object_id_vector[i].address > old_address){ + if(this_address > old_address){ std::size_t member_displacement - = reinterpret_cast<std::size_t>(object_id_vector[i].address) + = reinterpret_cast<std::size_t>(this_address) - reinterpret_cast<std::size_t>(old_address); object_id_vector[i].address = reinterpret_cast<void *>( reinterpret_cast<std::size_t>(new_address) + member_displacement @@ -260,7 +273,7 @@ basic_iarchive_impl::reset_object_address( else{ std::size_t member_displacement = reinterpret_cast<std::size_t>(old_address) - - reinterpret_cast<std::size_t>(object_id_vector[i].address); + - reinterpret_cast<std::size_t>(this_address); object_id_vector[i].address = reinterpret_cast<void *>( reinterpret_cast<std::size_t>(new_address) - member_displacement ); @@ -356,10 +369,12 @@ basic_iarchive_impl::load_object( void * t, const basic_iserializer & bis ){ + m_moveable_objects.is_pointer = false; + serialization::state_saver<bool> ss_is_pointer(m_moveable_objects.is_pointer); // if its been serialized through a pointer and the preamble's been done - if(t == pending_object && & bis == pending_bis){ + if(t == m_pending.object && & bis == m_pending.bis){ // read data - (bis.load_object_data)(ar, t, pending_version); + (bis.load_object_data)(ar, t, m_pending.version); return; } @@ -370,13 +385,13 @@ basic_iarchive_impl::load_object( load_preamble(ar, co); // save the current move stack position in case we want to truncate it - boost::serialization::state_saver<object_id_type> w(moveable_objects_start); + boost::serialization::state_saver<object_id_type> ss_start(m_moveable_objects.start); // note: extra line used to evade borland issue const bool tracking = co.tracking_level; object_id_type this_id; - moveable_objects_start = + m_moveable_objects.start = this_id = object_id_type(object_id_vector.size()); // if we tracked this object when the archive was saved @@ -388,11 +403,11 @@ basic_iarchive_impl::load_object( // add a new enty into the tracking list object_id_vector.push_back(aobject(t, cid)); // and add an entry for this object - moveable_objects_end = object_id_type(object_id_vector.size()); + m_moveable_objects.end = object_id_type(object_id_vector.size()); } // read data (bis.load_object_data)(ar, t, co.file_version); - moveable_objects_recent = this_id; + m_moveable_objects.recent = this_id; } inline const basic_pointer_iserializer * @@ -403,8 +418,10 @@ basic_iarchive_impl::load_pointer( const basic_pointer_iserializer * (*finder)( const boost::serialization::extended_type_info & type_ ) - ){ + m_moveable_objects.is_pointer = true; + serialization::state_saver<bool> w(m_moveable_objects.is_pointer); + class_id_type cid; load(ar, cid); @@ -434,10 +451,10 @@ basic_iarchive_impl::load_pointer( bpis_ptr = (*finder)(*eti); } BOOST_ASSERT(NULL != bpis_ptr); - class_id_type new_cid = register_type(bpis_ptr->get_basic_serializer()); + // class_id_type new_cid = register_type(bpis_ptr->get_basic_serializer()); + BOOST_VERIFY(register_type(bpis_ptr->get_basic_serializer()) == cid); int i = cid; cobject_id_vector[i].bpis_ptr = bpis_ptr; - BOOST_ASSERT(new_cid == cid); } int i = cid; cobject_id & co = cobject_id_vector[i]; @@ -453,38 +470,41 @@ basic_iarchive_impl::load_pointer( return bpis_ptr; // save state - serialization::state_saver<object_id_type> w_start(moveable_objects_start); + serialization::state_saver<object_id_type> w_start(m_moveable_objects.start); + + // allocate space on the heap for the object - to be constructed later + t = bpis_ptr->heap_allocation(); + BOOST_ASSERT(NULL != t); if(! tracking){ bpis_ptr->load_object_ptr(ar, t, co.file_version); } else{ - serialization::state_saver<void *> x(pending_object); - serialization::state_saver<const basic_iserializer *> y(pending_bis); - serialization::state_saver<version_type> z(pending_version); + serialization::state_saver<void *> x(m_pending.object); + serialization::state_saver<const basic_iserializer *> y(m_pending.bis); + serialization::state_saver<version_type> z(m_pending.version); - pending_bis = & bpis_ptr->get_basic_serializer(); - pending_version = co.file_version; + m_pending.bis = & bpis_ptr->get_basic_serializer(); + m_pending.version = co.file_version; // predict next object id to be created const unsigned int ui = object_id_vector.size(); - serialization::state_saver<object_id_type> w_end(moveable_objects_end); + serialization::state_saver<object_id_type> w_end(m_moveable_objects.end); - // because the following operation could move the items - // don't use co after this + // add to list of serialized objects so that we can properly handle // cyclic strucures object_id_vector.push_back(aobject(t, cid)); + // remember that that the address of these elements could change + // when we make another call so don't use the address bpis_ptr->load_object_ptr( - ar, - object_id_vector[ui].address, - co.file_version + ar, + t, + m_pending.version ); - t = object_id_vector[ui].address; object_id_vector[ui].loaded_as_pointer = true; - BOOST_ASSERT(NULL != t); } return bpis_ptr; diff --git a/3rdParty/Boost/src/libs/serialization/src/basic_oarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/basic_oarchive.cpp index 33f33f8..840955b 100644 --- a/3rdParty/Boost/src/libs/serialization/src/basic_oarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/basic_oarchive.cpp @@ -331,6 +331,12 @@ basic_oarchive_impl::save_pointer( // makes a copy when passing a non-const to a const. This // is permitted by the standard but rarely seen in practice const class_name_type cn(key); + if(cn.size() > (BOOST_SERIALIZATION_MAX_KEY_SIZE - 1)) + boost::serialization::throw_exception( + boost::archive::archive_exception( + boost::archive::archive_exception:: + invalid_class_name) + ); // write out the external class identifier ar.vsave(cn); } diff --git a/3rdParty/Boost/src/libs/serialization/src/basic_serializer_map.cpp b/3rdParty/Boost/src/libs/serialization/src/basic_serializer_map.cpp index 80e805f..7df0b3d 100644 --- a/3rdParty/Boost/src/libs/serialization/src/basic_serializer_map.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/basic_serializer_map.cpp @@ -43,11 +43,12 @@ basic_serializer_map::type_info_pointer_compare::operator()( BOOST_ARCHIVE_DECL(bool) basic_serializer_map::insert(const basic_serializer * bs){ // attempt to insert serializer into it's map - const std::pair<map_type::iterator, bool> result = - m_map.insert(bs); // the following is commented out - rather than being just // deleted as a reminder not to try this. + // const std::pair<map_type::iterator, bool> result = + m_map.insert(bs); + // At first it seemed like a good idea. It enforced the // idea that a type be exported from at most one code module // (DLL or mainline). This would enforce a "one definition rule" diff --git a/3rdParty/Boost/src/libs/serialization/src/binary_iarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/binary_iarchive.cpp index 7bb0435..c1117e9 100644 --- a/3rdParty/Boost/src/libs/serialization/src/binary_iarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/binary_iarchive.cpp @@ -22,20 +22,6 @@ namespace boost { namespace archive { // explicitly instantiate for this type of stream -template class detail::archive_serializer_map<naked_binary_iarchive>; -template class basic_binary_iprimitive< - naked_binary_iarchive, - std::istream::char_type, - std::istream::traits_type ->; -template class basic_binary_iarchive<naked_binary_iarchive> ; -template class binary_iarchive_impl< - naked_binary_iarchive, - std::istream::char_type, - std::istream::traits_type ->; - -// explicitly instantiate for this type of stream template class detail::archive_serializer_map<binary_iarchive>; template class basic_binary_iprimitive< binary_iarchive, diff --git a/3rdParty/Boost/src/libs/serialization/src/binary_wiarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/binary_wiarchive.cpp index a6135c8..720d469 100644 --- a/3rdParty/Boost/src/libs/serialization/src/binary_wiarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/binary_wiarchive.cpp @@ -26,19 +26,6 @@ namespace boost { namespace archive { -template class detail::archive_serializer_map<naked_binary_wiarchive>; -template class basic_binary_iprimitive< - naked_binary_wiarchive, - wchar_t, - std::char_traits<wchar_t> ->; -template class basic_binary_iarchive<naked_binary_wiarchive> ; -template class binary_iarchive_impl< - naked_binary_wiarchive, - wchar_t, - std::char_traits<wchar_t> ->; - // explicitly instantiate for this type of text stream template class detail::archive_serializer_map<binary_wiarchive>; template class basic_binary_iprimitive< diff --git a/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp b/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp index b155cd9..15102e2 100644 --- a/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp @@ -1,8 +1,3 @@ -// MS compatible compilers support #pragma once -#if defined(_MSC_VER) && (_MSC_VER >= 1020) -# pragma once -#endif - /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // shared_ptr_helper.hpp: serialization for boost shared pointern @@ -17,6 +12,7 @@ #include <list> #include <utility> #include <cstddef> // NULL +#include <cassert> #define BOOST_ARCHIVE_SOURCE // include this to prevent linker errors when the @@ -26,113 +22,42 @@ #include <boost/serialization/throw_exception.hpp> #include <boost/serialization/void_cast.hpp> #include <boost/serialization/extended_type_info.hpp> -#include <boost/archive/shared_ptr_helper.hpp> +#include <boost/serialization/shared_ptr_helper.hpp> #include <boost/archive/archive_exception.hpp> namespace boost { -namespace archive{ -namespace detail { +namespace serialization { /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // a common class for holding various types of shared pointers -// returns pointer to object and an indicator whether this is a -// new entry (true) or a previous one (false) -BOOST_ARCHIVE_DECL(shared_ptr<void>) -shared_ptr_helper::get_od( - const void * t, - const boost::serialization::extended_type_info * true_type, - const boost::serialization::extended_type_info * this_type -){ - // get void pointer to the most derived type - // this uniquely identifies the object referred to - const void * od = void_downcast( - *true_type, - *this_type, - t - ); - if(NULL == od) - boost::serialization::throw_exception( - archive_exception( - archive_exception::unregistered_cast, - true_type->get_debug_info(), - this_type->get_debug_info() - ) - ); - - // make tracking array if necessary - if(NULL == m_pointers) - m_pointers = new collection_type; - - //shared_ptr<const void> sp(od, null_deleter()); - shared_ptr<const void> sp(od, null_deleter()); - collection_type::iterator i = m_pointers->find(sp); - - if(i == m_pointers->end()){ - shared_ptr<void> np; - return np; - } - od = void_upcast( - *true_type, - *this_type, - i->get() - ); - if(NULL == od) - boost::serialization::throw_exception( - archive_exception( - archive_exception::unregistered_cast, - true_type->get_debug_info(), - this_type->get_debug_info() - ) - ); - - return shared_ptr<void>( - const_pointer_cast<void>(*i), - const_cast<void *>(od) - ); -} - -BOOST_ARCHIVE_DECL(void) -shared_ptr_helper::append(const boost::shared_ptr<const void> &sp){ - // make tracking array if necessary - if(NULL == m_pointers) - m_pointers = new collection_type; - - collection_type::iterator i = m_pointers->find(sp); - - if(i == m_pointers->end()){ - std::pair<collection_type::iterator, bool> result; - result = m_pointers->insert(sp); - BOOST_ASSERT(result.second); - } -} - // #ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP BOOST_ARCHIVE_DECL(void) -shared_ptr_helper::append(const boost_132::shared_ptr<const void> & t){ +shared_ptr_helper_base::append(const boost_132::shared_ptr<const void> & t){ if(NULL == m_pointers_132) m_pointers_132 = new std::list<boost_132::shared_ptr<const void> >; m_pointers_132->push_back(t); } // #endif + BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) -shared_ptr_helper::shared_ptr_helper() : - m_pointers(NULL) +shared_ptr_helper_base::shared_ptr_helper_base() : + m_o_sp(NULL) #ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP , m_pointers_132(NULL) #endif {} + BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) -shared_ptr_helper::~shared_ptr_helper(){ - if(NULL != m_pointers) - delete m_pointers; +shared_ptr_helper_base::~shared_ptr_helper_base(){ + if(NULL != m_o_sp) + delete m_o_sp; #ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP if(NULL != m_pointers_132) delete m_pointers_132; #endif } -} // namespace detail } // namespace serialization } // namespace boost diff --git a/3rdParty/Boost/src/libs/serialization/src/text_iarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/text_iarchive.cpp index cb9017f..9520ca2 100644 --- a/3rdParty/Boost/src/libs/serialization/src/text_iarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/text_iarchive.cpp @@ -24,10 +24,6 @@ namespace boost { namespace archive { -template class detail::archive_serializer_map<naked_text_iarchive>; -template class basic_text_iarchive<naked_text_iarchive> ; -template class text_iarchive_impl<naked_text_iarchive> ; - template class detail::archive_serializer_map<text_iarchive>; template class basic_text_iarchive<text_iarchive> ; template class text_iarchive_impl<text_iarchive> ; diff --git a/3rdParty/Boost/src/libs/serialization/src/text_wiarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/text_wiarchive.cpp index a6630c0..a0c68a8 100644 --- a/3rdParty/Boost/src/libs/serialization/src/text_wiarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/text_wiarchive.cpp @@ -26,10 +26,6 @@ namespace boost { namespace archive { -template class detail::archive_serializer_map<naked_text_wiarchive>; -template class basic_text_iarchive<naked_text_wiarchive> ; -template class text_wiarchive_impl<naked_text_wiarchive> ; - template class detail::archive_serializer_map<text_wiarchive>; template class basic_text_iarchive<text_wiarchive> ; template class text_wiarchive_impl<text_wiarchive> ; diff --git a/3rdParty/Boost/src/libs/serialization/src/utf8_codecvt_facet.cpp b/3rdParty/Boost/src/libs/serialization/src/utf8_codecvt_facet.cpp index d064c63..07deada 100644 --- a/3rdParty/Boost/src/libs/serialization/src/utf8_codecvt_facet.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/utf8_codecvt_facet.cpp @@ -7,15 +7,14 @@ #ifdef BOOST_NO_STD_WSTREAMBUF #error "wide char i/o not supported on this platform" #else - -#define BOOST_UTF8_BEGIN_NAMESPACE \ - namespace boost { namespace archive { namespace detail { -#define BOOST_UTF8_DECL -#define BOOST_UTF8_END_NAMESPACE }}} -#include <boost/detail/utf8_codecvt_facet.ipp> -#undef BOOST_UTF8_END_NAMESPACE -#undef BOOST_UTF8_DECL -#undef BOOST_UTF8_BEGIN_NAMESPACE - + #ifdef BOOST_NO_CXX11_HDR_CODECVT + #define BOOST_UTF8_BEGIN_NAMESPACE \ + namespace boost { namespace archive { namespace detail { + #define BOOST_UTF8_DECL + #define BOOST_UTF8_END_NAMESPACE }}} + #include <boost/detail/utf8_codecvt_facet.ipp> + #undef BOOST_UTF8_END_NAMESPACE + #undef BOOST_UTF8_DECL + #undef BOOST_UTF8_BEGIN_NAMESPACE + #endif // BOOST_NO_CXX11_HDR_CODECVT #endif // BOOST_NO_STD_WSTREAMBUF - diff --git a/3rdParty/Boost/src/libs/serialization/src/xml_archive_exception.cpp b/3rdParty/Boost/src/libs/serialization/src/xml_archive_exception.cpp index ea78916..41d33fd 100644 --- a/3rdParty/Boost/src/libs/serialization/src/xml_archive_exception.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/xml_archive_exception.cpp @@ -31,23 +31,23 @@ xml_archive_exception::xml_archive_exception( ) : archive_exception(other_exception, e1, e2) { - m_msg = "programming error"; switch(c){ case xml_archive_parsing_error: - m_msg = "unrecognized XML syntax"; + archive_exception::append(0, "unrecognized XML syntax"); break; case xml_archive_tag_mismatch: - m_msg = "XML start/end tag mismatch"; + archive_exception::append(0, "XML start/end tag mismatch"); if(NULL != e1){ - m_msg += " - "; - m_msg += e1; + archive_exception::append(0, " - "); + archive_exception::append(0, e1); } break; case xml_archive_tag_name_error: - m_msg = "Invalid XML tag name"; + archive_exception::append(0, "Invalid XML tag name"); break; default: BOOST_ASSERT(false); + archive_exception::append(0, "programming error"); break; } } diff --git a/3rdParty/Boost/src/libs/serialization/src/xml_iarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/xml_iarchive.cpp index 6d0de77..4311893 100644 --- a/3rdParty/Boost/src/libs/serialization/src/xml_iarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/xml_iarchive.cpp @@ -34,10 +34,6 @@ namespace boost { namespace archive { -template class detail::archive_serializer_map<naked_xml_iarchive>; -template class basic_xml_iarchive<naked_xml_iarchive> ; -template class xml_iarchive_impl<naked_xml_iarchive> ; - template class detail::archive_serializer_map<xml_iarchive>; template class basic_xml_iarchive<xml_iarchive> ; template class xml_iarchive_impl<xml_iarchive> ; diff --git a/3rdParty/Boost/src/libs/serialization/src/xml_wiarchive.cpp b/3rdParty/Boost/src/libs/serialization/src/xml_wiarchive.cpp index 2e10947..0266548 100644 --- a/3rdParty/Boost/src/libs/serialization/src/xml_wiarchive.cpp +++ b/3rdParty/Boost/src/libs/serialization/src/xml_wiarchive.cpp @@ -39,10 +39,6 @@ namespace boost { namespace archive { -template class detail::archive_serializer_map<naked_xml_wiarchive>; -template class basic_xml_iarchive<naked_xml_wiarchive> ; -template class xml_wiarchive_impl<naked_xml_wiarchive> ; - template class detail::archive_serializer_map<xml_wiarchive>; template class basic_xml_iarchive<xml_wiarchive> ; template class xml_wiarchive_impl<xml_wiarchive> ; |