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