boost.serializaion off by one error
Hi all: Recently i come up with a problem in boost.serializaion when serializing primitives. with the following code, the output is: 1 0 input stream error But what i expect is: 1 input stream error test code: #include <boost/archive/text_iarchive.hpp> #include <boost/archive/text_oarchive.hpp> #include <sstream> #include <iostream> int main(int argc, char *argv[]) { std::stringstream stream; { boost::archive::text_oarchive oa(stream); int i = 1; oa << i; } try { boost::archive::text_iarchive ia(stream); int i = 0; ia >> i; std::cout << i << std::endl; i = 0; ia >> i; std::cout << i << std::endl; i = 0; ia >> i; std::cout << i << std::endl; }catch(boost::archive::archive_exception& ex){ std::cout << ex.what() << std::endl; } return 0; } the exception is threw in /usr/include/boost/archive/basic_text_iprimitive.hpp: basic_text_iprimitive:: template<class T> void load(T & t) { if(! is.fail()){ is >> t; //HERE SHOULD TEST IF READ IS SUCCUSSFULL return; } boost::serialization::throw_exception( archive_exception(archive_exception::input_stream_error) ); } In the function basic_text_iprimitive::load(T t), when T is a primitive, and is >> t fails, there is no exception threw, where there should. The same problem exsits in binary archive and text archive. Is it a bug or a feature? would it be fixed?
participants (1)
-
. lai