diff --git a/external/boost/archive/portable_binary_archive.hpp b/external/boost/archive/portable_binary_archive.hpp index 560ef121b..e940c5b9e 100644 --- a/external/boost/archive/portable_binary_archive.hpp +++ b/external/boost/archive/portable_binary_archive.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #if CHAR_BIT != 8 @@ -37,7 +38,9 @@ enum portable_binary_archive_flags { //#endif inline void -reverse_bytes(char size, char *address){ +reverse_bytes(signed char size, char *address){ + if (size <= 0) + throw archive_exception(archive_exception::other_exception); char * first = address; char * last = first + size - 1; for(;first < last;++first, --last){ diff --git a/external/boost/archive/portable_binary_iarchive.hpp b/external/boost/archive/portable_binary_iarchive.hpp index b67899b52..7792b530d 100644 --- a/external/boost/archive/portable_binary_iarchive.hpp +++ b/external/boost/archive/portable_binary_iarchive.hpp @@ -234,7 +234,7 @@ namespace boost { namespace archive { inline void portable_binary_iarchive::load_impl(boost::intmax_t & l, char maxsize){ - char size; + signed char size; l = 0; this->primitive_base_t::load(size); diff --git a/external/boost/archive/portable_binary_oarchive.hpp b/external/boost/archive/portable_binary_oarchive.hpp index 74afe2357..9ed30d064 100644 --- a/external/boost/archive/portable_binary_oarchive.hpp +++ b/external/boost/archive/portable_binary_oarchive.hpp @@ -225,7 +225,7 @@ portable_binary_oarchive::save_impl( const boost::intmax_t l, const char maxsize ){ - char size = 0; + signed char size = 0; if(l == 0){ this->primitive_base_t::save(size); @@ -245,7 +245,7 @@ portable_binary_oarchive::save_impl( }while(ll != 0); this->primitive_base_t::save( - static_cast(negative ? -size : size) + static_cast(negative ? -size : size) ); if(negative)