Hi ROOT - team,
is it possible to open the same ROOT file twice in UPDATE - mode?
I want to write two objects ( in the example macro below they are name1 and
name2) in the same file independent of each other.
The following macro results in a somehow corrupted ROOT file or do I something
wrong?
Thanks Reiner.
{
gROOT->Reset();
// create a new file
TFile * file1 = new TFile("update_two.root", "NEW");
TDirectory * dir1 = file1->mkdir("sub1");
TNamed * name1 = new TNamed("name1", "title1");
file1->cd();
file1->Write();
// open the same file in update mode
TFile * file2 = new TFile("update_two.root", "UPDATE");
TDirectory * dir2 = file2->mkdir("sub2");
TNamed * name2 = new TNamed("name2", "title2");
file2->cd();
file2->Write();
TDirectory * tmpDir;
// write the first object and close the file
tmpDir = gDirectory;
dir1->cd();
name1->Write(name1->GetName(), TObject::kOverwrite);
file1->cd();
file1->Write();
gDirectory = tmpDir;
delete file1;
// write the second object and close the file
tmpDir = gDirectory;
dir2->cd();
name2->Write(name2->GetName(), TObject::kOverwrite);
file2->cd();
file2->Write();
gDirectory = tmpDir;
delete file2;
// test the result
TFile * tf = new TFile("update_two.root");
tf->ls();
tf->Map();
// this shows something unexpected
tf->cd("sub1");
// this crashesthe root session
tf->ls();
tf->cd("sub2");
tf->ls();
delete tf;
}
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:27 MET