[ROOT] Problem reading files with __malloc_alloc_template<0> i.s.o. allocator<X>

From: Aart Heijboer (aart.heijboer@nikhef.nl)
Date: Sun May 11 2003 - 17:17:09 MEST


Dear ROOTers,

I am trying to read some old files, containing classes with STL
containers,
on a new system  with a new root version (details below).  It seems
that there are problems with the dictionary information which have to
do with the allocators used in STL containers.

When opening a  file (written with v3.03.09), warnings are given like:
Warning in <TClass::TClass>: no dictionary for class
vector<SPE_Hit,__malloc_alloc_template<0> > is available
(where SPE_Hit is some class of mine)

I have understood that recently the dictionary generator (and/or gcc)
has
changed to use 'allocator<X>' as the allocator for STL containers of X,
in  stead of the previously used  '__malloc_alloc_template<0>'.
This , I think, explains why no information for
vector<SPE_HIT,__malloc_alloc...etc>
is availble in my newly compiled library with dictionary information.

Is there any trick that one could think of to still be able to read
these files
while using recent versions of root/rootcint? Or perhaps my diagnosis is
totally wrong?

[one thing I tried is to use everywhere __malloc_alloc_template<0> in
the
class definitions... that works, but it breaks a lot of other codes,
since these
codes use the type vector<X> (which defaults to vector<X, allocator<X>>
now)
and this cannot be converted to/from vector<X,
__malloc_alloc_template<0> >.]

Any help would be greatly appreciated,
Thanks,
Aart.

files written with
redhat 6.2
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
ROOT version 3.03/09

trying to read with
gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-113)
ROOT Version   3.05/05

--
::Aart Heijboer,
::NIKHEF, Nat. Inst. for Nuclear and High Energy Physics
::Phone: +31 20 592 2073
::aart.heijboer@nikhef.nl



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET