diff --git a/include/boost/archive/archive_exception.hpp b/include/boost/archive/archive_exception.hpp
index 1159d27..fabcdb5 100644
--- a/boost/archive/archive_exception.hpp
+++ b/boost/archive/archive_exception.hpp
@@ -87,6 +87,7 @@ class BOOST_SYMBOL_VISIBLE archive_exception :
const char * e1 = NULL,
const char * e2 = NULL
) BOOST_NOEXCEPT;
+ BOOST_ARCHIVE_DECL archive_exception(archive_exception const &) BOOST_NOEXCEPT ;
virtual BOOST_ARCHIVE_DECL ~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ;
virtual BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ;
};
diff --git a/boost/archive/detail/basic_oarchive.hpp b/boost/archive/detail/basic_oarchive.hpp
index 702c560..03ad17b 100644
--- a/boost/archive/detail/basic_oarchive.hpp
+++ b/boost/archive/detail/basic_oarchive.hpp
@@ -61,9 +61,7 @@ class BOOST_SYMBOL_VISIBLE basic_oarchive :
protected:
BOOST_ARCHIVE_DECL basic_oarchive(unsigned int flags = 0);
BOOST_ARCHIVE_DECL boost::archive::detail::helper_collection &
- get_helper_collection(){
- return *this;
- }
+ get_helper_collection();
// account for bogus gcc warning
#if defined(__GNUC__)
virtual
diff --git a/boost/archive/polymorphic_iarchive.hpp b/boost/archive/polymorphic_iarchive.hpp
index 7f19410..b465bb1 100644
--- a/boost/archive/polymorphic_iarchive.hpp
+++ b/boost/archive/polymorphic_iarchive.hpp
@@ -44,7 +44,7 @@ namespace serialization {
namespace archive {
namespace detail {
class BOOST_ARCHIVE_DECL basic_iarchive;
- class BOOST_ARCHIVE_DECL basic_iarchive;
+ class BOOST_ARCHIVE_DECL basic_iserializer;
}
class polymorphic_iarchive;
diff --git a/boost/archive/xml_archive_exception.hpp b/boost/archive/xml_archive_exception.hpp
index b07f9a0..82c53ef 100644
--- a/boost/archive/xml_archive_exception.hpp
+++ b/boost/archive/xml_archive_exception.hpp
@@ -45,6 +45,8 @@ class BOOST_SYMBOL_VISIBLE xml_archive_exception :
const char * e1 = NULL,
const char * e2 = NULL
);
+ BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ;
+ virtual BOOST_ARCHIVE_DECL ~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ;
};
}// namespace archive
diff --git a/libs/serialization/src/archive_exception.cpp b/libs/serialization/src/archive_exception.cpp
index b850f89..5ff4b5f 100644
--- a/libs/serialization/src/archive_exception.cpp
+++ b/libs/serialization/src/archive_exception.cpp
@@ -14,6 +14,7 @@
#include <exception>
#include <string>
+#include <cstring>
#define BOOST_ARCHIVE_SOURCE
#include <boost/archive/archive_exception.hpp>
@@ -21,6 +22,7 @@
namespace boost {
namespace archive {
+BOOST_ARCHIVE_DECL
unsigned int
archive_exception::append(unsigned int l, const char * a){
while(l < (sizeof(m_buffer) - 1)){
@@ -109,13 +111,23 @@ archive_exception::archive_exception(
break;
}
}
+
+BOOST_ARCHIVE_DECL
+archive_exception::archive_exception(archive_exception const & oth) BOOST_NOEXCEPT :
+ std::exception(oth),
+ code(oth.code)
+{
+ std::memcpy(m_buffer,oth.m_buffer,sizeof m_buffer);
+}
+
BOOST_ARCHIVE_DECL
archive_exception::~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {}
BOOST_ARCHIVE_DECL const char *
-archive_exception::what( ) const BOOST_NOEXCEPT_OR_NOTHROW {
+archive_exception::what() const BOOST_NOEXCEPT_OR_NOTHROW {
return m_buffer;
}
+
BOOST_ARCHIVE_DECL
archive_exception::archive_exception() BOOST_NOEXCEPT :
code(no_exception)
diff --git a/libs/serialization/src/basic_oarchive.cpp b/libs/serialization/src/basic_oarchive.cpp
index c99baeb..18522af 100644
--- a/libs/serialization/src/basic_oarchive.cpp
+++ b/libs/serialization/src/basic_oarchive.cpp
@@ -454,6 +454,11 @@ BOOST_ARCHIVE_DECL void
basic_oarchive::end_preamble(){
}
+BOOST_ARCHIVE_DECL helper_collection &
+basic_oarchive::get_helper_collection(){
+ return *this;
+}
+
} // namespace detail
} // namespace archive
} // namespace boost
diff --git a/libs/serialization/src/xml_archive_exception.cpp b/libs/serialization/src/xml_archive_exception.cpp
index c1431e2..f4bf896 100644
--- a/libs/serialization/src/xml_archive_exception.cpp
+++ b/libs/serialization/src/xml_archive_exception.cpp
@@ -51,6 +51,14 @@ xml_archive_exception::xml_archive_exception(
break;
}
}
+
+BOOST_ARCHIVE_DECL
+xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) :
+ archive_exception(oth)
+ {
+ }
+
+BOOST_ARCHIVE_DECL xml_archive_exception::~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {}
} // archive
} // boost