Dear Rooters I have the following situation: First I open an existing file "fDataFile" which contains some data trees. In a first step I add these trees as friends to a tree "fTree". Then I create a new file "fFile" where the result tree "atree" should be stored. Later, I create the result tree "atree" in a class method. After filling "atree" I want to add "atree" as friend to fTree, too. The relevant code fragment of the method looks like this: TTree *atree = new TTree(treename, ""); // fill atree fFile->cd(); atree->Write(); fTree->AddFriend(atree->GetName(), fFile->GetName()); In this case AddTree() results in the following message: Warning in <TFile::Init>: file /Users/cs/ROOT/rootcode/tmp.root probably not closed, trying to recover Info in <TFile::Recover>: /Users/cs/ROOT/rootcode/tmp.root, recovered key TTree:Test at address 350 Warning in <TFile::Init>: successfully recovered 1 keys Nevertheless, everything works fine including the call to the destructors, where I delete "fDataFile" with "SafeDelete(fDataFile)". In contrast, when I add "atree" as friend using: fTree->AddFriend(atree->GetName(), fFile); everything works fine until I call the destructors. When I try to delete "fDataFile" with "SafeDelete(fDataFile)" then root crashes beyond recovery with "*** Break *** bus error" However, if I remove "atree" after usage by calling in a different method fTree->RemoveFriend(atree); then everything works fine again and I can call "SafeDelete(fDataFile)" in the destructor. Does anybody have an idea what might be the reason for this behavior? (I am afraid ths code is too complex to extract a simple macro.) Thank you in advance Best regards Christian -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- C.h.r.i.s.t.i.a.n. .S.t.r.a.t.o.w.a V.i.e.n.n.a. .A.u.s.t.r.i.a -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:08 MET