
My current copy the code includes in the file iserializer.hpp (line # 291) the following code. Doesn't this address the situation? Robert Ramey template<class Archive, class T> BOOST_DLLEXPORT void pointer_iserializer<Archive, T>::load_object_ptr( basic_iarchive & ar, void * & x, const unsigned int file_version ) const { Archive & ar_impl = boost::smart_cast_reference<Archive &>(ar); auto_ptr_with_deleter<T> ap(heap_allocator<T>::invoke()); if(NULL == ap.get()) boost::throw_exception(std::bad_alloc()) ; T * t = ap.get(); x = t; // catch exception during load_construct_data so that we don't // automatically delete the t which is most likely not fully // constructed BOOST_TRY { // this addresses an obscure situtation that occurs when // load_constructor de-serializes something through a pointer. ar.next_object_pointer(t); boost::serialization::load_construct_data_adl<Archive, T>( ar_impl, t, file_version ); } BOOST_CATCH(...){ ap.release(); BOOST_RETHROW; } BOOST_CATCH_END ar_impl >> boost::serialization::make_nvp(NULL, * t); ap.release(); } Johan Råde wrote:
Robert Ramey wrote:
Johan Råde wrote:
Maybe you could offer me a fix for the bug that makes the serialization library crash when you throw an exception in a load_construct_data function ;-)
LOL - hmmm - I think I looked into this but I don't remember what I did with it. Send me a link to the original complaint and I'll check again.
Robert Ramey
The original complaint was in a private e-mail that I sent you 2 1/2 years ago. I don't think I will be able to find it. The sender was rade@maths.lth.se. If you don't have the mail, I'd be happy to send you a short example that reproduces the bug.
--Johan Råde