portable serializer: use signed char for size
This commit is contained in:
parent
dd580d7bc7
commit
9d1d3a454e
@ -14,6 +14,7 @@
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/cstdint.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/archive/archive_exception.hpp>
|
||||
|
||||
#include <climits>
|
||||
#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){
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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<char>(negative ? -size : size)
|
||||
static_cast<signed char>(negative ? -size : size)
|
||||
);
|
||||
|
||||
if(negative)
|
||||
|
Loading…
Reference in New Issue
Block a user