Boost logo

Boost :

Subject: [boost] [serialization] Latest changes broke module-singleton
From: Hartmut Kaiser (hartmut.kaiser_at_[hidden])
Date: 2009-07-16 19:29:38


Hi all,

I believe the latest changes to the serialization library in trunk broke the
encapsulation of module singletons. Module singletons are now accessed
across module boundaries (i.e data stored in a different module are looked
up locally).

A polymorphic class registered using BOOST_CLASS_EXPORT() gets registered in
the archive's basic_serializer_map, which is stored in a module-singleton.
Ok so far. Now, if this type is serialized by a different module via its
base class (which is the usual scenario for us, as all serialization code
lives in one place) this code tries to look up the type in the archive's
module-singleton (basic_serializer_map) of its own module (I saw this for
instance at boost/archive/detail/oserializer.npp, line 413). But the data is
stored not there but in the original module, where the type is implemented.

As a result the assertion at
libs/serialization/src/basic_initializer_map.cpp, line 56 fires.

Anything I could do about this?

Regards Hartmut


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