Hi folks,
I'm dealing with binary archives which may have been corrupted enroute to
my code. My naive expectation was that the serialization library should
throw an exception when it encounters something in the input stream it
doesn't understand (in which case my code can react gracefully). But, I've
found that:
1. There exist cases where serialization will just assert and bring down
the process
2. The documentation suggests that an exception should be thrown, but I
didn't find any strong statement of this, so I am not sure whether it is a
contract of the library.
My first and most pressing question is: is it a guarantee of the library
that invalid input should result in an exception and not an assert? If
this is not so, I think it should be documented much more clearly.
If it is so, then this message is a bug report. There's an assert in
archive/basic_binary_iprimitive.hpp:98 that can be triggered if the bytes
in the archive which represent a bool actually contain a value other than 0
or 1. One can trigger this in a test case like so (on x86_64 Linux, at
least):
==========
#include