Boost logo

Boost :

From: Joaquin M Lopez Munoz (joaquin_at_[hidden])
Date: 2004-04-12 04:25:20


Robert Ramey <ramey <at> rrsd.com> writes:

>
> Fellow boosters,
>
> I just uploaded version #18 of the proposed boost serialization library to
> the files section. It can also be downloaded at www.rrsd.com
>
> It contains improvements in code/file/namespace organization, better
> documentation on how its implemented, and a number of arcane bug fixes.
>

I think I detected a minor bug in collections_load_imp.hpp.
The operator() code for archive_input_seq reads:

inline void operator()(Archive &ar, Container &s)
{
    typedef BOOST_DEDUCED_TYPENAME Container::value_type type;
    stack_allocate<type> t;
    load_construct_data(ar, t.address(), 0U);
    ar >> make_nvp("item", t.reference());
    s.push_back(t.reference());
    t.address()->~type(); // undo load_construct_data above
}

This is AFAICS not exception-safe: if say s.push_back()
throws, the dtor for the stack-allocated variable t won't
be called. The same problem in similar code snippets
through this file. Apologies if my perception is wrong.

Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk