Hi Beatriz, Manuel, This problem has been fixed in 2.23/04. See release notes. Rene Brun On Mon, 18 Oct 1999, Beatriz Fuentes Arenaz wrote: > > Hello root gurus, > > We have found a problem when writing more than one TArrayF pointer into a > buffer. For example, we can write a Test (see code below) object into a > file, but when reading it back we get the following error message: > > Error in <TBuffer::ReadClass>: illegal class tag=55 (0<tag<=3), > I/O buffer corrupted > > *** Break *** segmentation violation > > > The error does not appear if one of the TArrayF pointers is not > persistent, or if we use the Streamer function in the code below. This > Streamer function only differs from the one automatically generated by > rootcint in the use of the TArrayF::Streamer instead of the >> > and << operators. > > This problem did not appear in ROOT version 2.21/08. Have you got insight > what the problem is? > > > Thanks in advance, > > > Manuel Sanchez Garcia > Beatriz Fuentes Arenaz > > > > # ifndef TEST_H > # define TEST_H > > # include "TObject.h" > # include "TArrayF.h" > > class Test : public TObject{ > > private: > > Short_t nSectors, nModules; // number of sectors and modules in > setup > TArrayF *resolution; // plane resolution in cm > TArrayF *efficiency; // efficiency of chamber (in %) > public: > Test(void); > ~Test(void); > > ClassDef(Test,1) > }; > > > # endif > > > > # include "test.h" > # include <iostream.h> > > ClassImp(Test) > > > Test :: Test(void){ > > nSectors = 6; > nModules = 4; > > efficiency = new TArrayF(nSectors*nModules); > resolution = new TArrayF(nSectors*nModules); > > } > > > Test :: ~Test(void){ > > if (resolution) delete resolution; > if (efficiency) delete efficiency; > } > > > #if 0 > > void Test::Streamer(TBuffer &R__b) > { > // Stream an object of class HMdcsDigiPar. > > if (R__b.IsReading()) { > Version_t R__v = R__b.ReadVersion(); if (R__v) { } > TObject::Streamer(R__b); > R__b >> nSectors; > R__b >> nModules; > resolution->Streamer(R__b); > efficiency->Streamer(R__b); > } else { > R__b.WriteVersion(Test::IsA()); > TObject::Streamer(R__b); > R__b << nSectors; > R__b << nModules; > resolution->Streamer(R__b); > efficiency->Streamer(R__b); > } > } > #endif > > > > > > > --- > Manuel Sanchez Garcia > Beatriz Fuentes Arenaz > Org: Departamento de Fisica de Particulas, despacho 106 > Facultad de Fisica > Universidad de Santiago de Compostela > Mail: E - 15706 - Santiago de Compostela Tlf: +34-981-563100 ext:13981 > E-Mail: manuel@fpddv1.usc.es Fax: +34-981-521091 > beatriz@fpddux.usc.es >
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:41 MET