
I think I fixed this and checked in the change a couple of hours ago. I broke this while fixing something else. Now all serializer maps should be instanticiated only by the serialization DLL. Let me know if there's still a problem. Let me know if it's not fixed. Hartmut Kaiser wrote:
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
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost