Hello,
I have a class with custom streamer, which works fine for root 3.02 and
lower but produces an error during the reading with all higher root
versions:
Error in <TBuffer::CheckByteCount>: object of class NaCovMatrix read too
many bytes: 107 instead of 95
Warning in <TBuffer::CheckByteCount>: NaCovMatrix::Streamer() not in sync
with data on file, fix Streamer()
The relevant parts of the class definition are
typedef Float_t MElem_t; // Type of matrix elements
class NaCovMatrix : public TObject {
protected:
Int_t fSize; // Size of the matrix
Int_t fSize2; // Number of elements (size^2)
MElem_t* fElements; //[fSize2] Elements
MElem_t** fIndex; //! Pointers on rows
};
The streamer looks like:
void NaCovMatrix::Streamer(TBuffer &R__b)
{
// Stream an object of class NaMatrix.
if (R__b.IsReading()) {
NaCovMatrix::Class()->ReadBuffer(R__b, this);
fIndex = new MElem_t*[fSize];
MElem_t* pnt=&fElements[0];
for (Int_t i=0;i<fSize;i++,pnt+=fSize) fIndex[i] = pnt;
} else {
NaCovMatrix::Class()->WriteBuffer(R__b, this);
}
}
Does anybody have idea what could be the reason?
I attach the small script testM compiling and running an example
producing an error with root 3.03, 3,04 and 3.05 but working with 3.02
Best regards,
Ruben
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:08 MET