Hi Dirk, Thanks for reporting this problem with TRef. It is now fixed in CVS. The problem was in TProcessID::WriteProcessID where the line testing if a TProcessID was already encountered in the file was not correct. Rene Brun On Wed, 8 May 2002, Dirk Geppert wrote: > Dear Rooters, > > attached you may find a simple program with two classes A and B, > where B has an attribute pointing to an instance of A via TRef. > Both classes are written to two branches of a tree. > > Running the program ONCE works as expected: > - no error messages > - one TProcessID object is written out, listed via > a) hfile->GetListOfProcessIDs()->Print() > b) hfile->GetNProcessIDs() > c) loop over all TKeys in the created file with ClassName TProcessID > > However, updating the tree, i.e. running the program again, > - an error message appears in tree->Fill() (only when B is written out): > Error in <TObjArray::At>: index 2 out of bounds > (size: 2, this:0x08493030) > - the number of listed TProcessIDs is inconsistent: > via a) twice the number of created B objects, > with all the same Name and Title (of TProcessID) > via b & c) same as a) plus 1 (from first run) > > Version 3.03/05 on Linux RH 6.1 with gcc 2.95.2 > > My questions are: > - Why does the error message appear? Is there something wrong in the way > the tree/branches are updated? > - Why for n>1 runs of the program not only one process ID for each time > the program is run is written to the file? > - Why are in TFile::ListOfProcessIDs only the new TProcessIDs stored > while TFile::NProcessIDs gives the correct answer? > > Thanks for you help, > Dirk > > >
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:52 MET