$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] serialisation use of asserts versus throw ?
From: Avi Bahra (avibahra_at_[hidden])
Date: 2012-09-06 06:19:06
This is question about use of asserts in boost serialisation.
As a program migrates from one release to another
the api changes. This is expected. In my case I have
client/server that uses boost serialisation.
I was expecting an throw due to the incompatibility
not a an assert. The assert crashes my client,
giving no chance for recovery, and informing the user
that they are using previous out of date release/server.
In may case: boost_iarchive.cpp
inline const basic_pointer_iserializer *
 399 basic_iarchive_impl::load_pointer(
 400     basic_iarchive &ar,
 401     void * & t,
 402     const basic_pointer_iserializer * bpis_ptr,
 403     const basic_pointer_iserializer * (*finder)(
 404         const boost::serialization::extended_type_info & type_
 405     )
 406
 407 ){
     .....
 436         BOOST_ASSERT(NULL != bpis_ptr);
 437         class_id_type new_cid =
register_type(bpis_ptr->get_basic_serializer());
 438         int i = cid;
 439         cobject_id_vector[i].bpis_ptr = bpis_ptr;
 440         BOOST_ASSERT(new_cid == cid);            // yikes
How do people get round this issue, where old and new release
of software need to co-exist ?
Would it be possible to use a #define to configure use of
asserts or throw ?
Any help apperciated .
Best regards,
Ta,
    Avi