diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index e7e1423340292d3b321c1099a4f7a443410a0352..8ac82b8b83fe67c8916184c90ab3098be1c8ce6c 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -1300,6 +1300,8 @@ void TFile::Map() Short_t keylen,cycle; UInt_t datime; Int_t nbytes,date,time,objlen,nwheader; + date = 0; + time = 0; Long64_t seekkey,seekpdir; char *buffer; char nwhc; diff --git a/io/sql/src/TBufferSQL2.cxx b/io/sql/src/TBufferSQL2.cxx index 9621abe0afe58e5a4629419842ef7c6073d1428b..3ae52ebad4be5d1b2486c2d397a06a04eca5cd0c 100644 --- a/io/sql/src/TBufferSQL2.cxx +++ b/io/sql/src/TBufferSQL2.cxx @@ -72,6 +72,7 @@ TBufferSQL2::TBufferSQL2() : fReadVersionBuffer(-1), fObjIdCounter(1), fIgnoreVerification(kFALSE), + fCurrentData(0), fObjectsInfos(0), fFirstObjId(0), fLastObjId(0), @@ -94,6 +95,7 @@ TBufferSQL2::TBufferSQL2(TBuffer::EMode mode) : fReadVersionBuffer(-1), fObjIdCounter(1), fIgnoreVerification(kFALSE), + fCurrentData(0), fObjectsInfos(0), fFirstObjId(0), fLastObjId(0), @@ -121,6 +123,7 @@ TBufferSQL2::TBufferSQL2(TBuffer::EMode mode, TSQLFile* file) : fReadVersionBuffer(-1), fObjIdCounter(1), fIgnoreVerification(kFALSE), + fCurrentData(0), fObjectsInfos(0), fFirstObjId(0), fLastObjId(0), diff --git a/io/xml/src/TBufferXML.cxx b/io/xml/src/TBufferXML.cxx index 5513296267b25b54cdff4d4044c4da46967bc22f..8e6c67780228518011accc4082a7785c08be2be2 100644 --- a/io/xml/src/TBufferXML.cxx +++ b/io/xml/src/TBufferXML.cxx @@ -106,6 +106,7 @@ TBufferXML::TBufferXML(TBuffer::EMode mode) : TBufferXML::TBufferXML(TBuffer::EMode mode, TXMLFile* file) : TBufferFile(mode), TXMLSetup(*file), + fXML(0), fStack(), fVersionBuf(-111), fObjMap(0), diff --git a/misc/table/inc/TIndexTable.h b/misc/table/inc/TIndexTable.h index db8f1c629dd97b417248dcc7a04d8cbf52349256..cb878629a4df768e2c6182a2604d19cb61599add 100644 --- a/misc/table/inc/TIndexTable.h +++ b/misc/table/inc/TIndexTable.h @@ -52,7 +52,7 @@ public: Bool_t operator!=(const iterator &t) const { return !operator==(t); } }; TIndexTable(const TTable *table); - TIndexTable(const TIndexTable &indx): TTable(indx){} + TIndexTable(const TIndexTable &indx): TTable(indx),fRefTable(indx.fRefTable) {} int *GetTable(Int_t i=0); Bool_t IsValid() const; void push_back(Long_t next); diff --git a/tree/tree/src/TBasketSQL.cxx b/tree/tree/src/TBasketSQL.cxx index 0c42bc5aad68839226cf972672af613d7f2f6a55..76834120a0c0a94a6c87e10530cc224512a48a87 100644 --- a/tree/tree/src/TBasketSQL.cxx +++ b/tree/tree/src/TBasketSQL.cxx @@ -36,7 +36,7 @@ ClassImp(TBasketSQL) namespace std {} using namespace std; //_________________________________________________________________________ -TBasketSQL::TBasketSQL() : TBasket() +TBasketSQL::TBasketSQL() : TBasket(), fResultPtr(0), fRowPtr(0), fInsertQuery(0) { // Default constructor. diff --git a/tree/tree/src/TEntryListFromFile.cxx b/tree/tree/src/TEntryListFromFile.cxx index 9409c1e651192240a163fd9068b8e81ffd6d916b..2ac1aa86a9d1d5b3c5b67e78bc50745a2b3c6851 100644 --- a/tree/tree/src/TEntryListFromFile.cxx +++ b/tree/tree/src/TEntryListFromFile.cxx @@ -35,53 +35,48 @@ #include "TObjArray.h" #include "TFile.h" #include "TKey.h" +#include "TError.h" ClassImp(TEntryListFromFile) -TEntryListFromFile::TEntryListFromFile():TEntryList() +TEntryListFromFile::TEntryListFromFile(): TEntryList(), + fListFileName(""), fListName(""), fNFiles(0), fListOffset(0), fFile(0), fFileNames(0) { -// default c-tor - - fListFileName =""; - fNFiles = 0; - fFile = 0; + // default constructor. + } //______________________________________________________________________________ -TEntryListFromFile::TEntryListFromFile(const char *filename, const char *listname, Int_t nfiles):TEntryList() +TEntryListFromFile::TEntryListFromFile(const char *filename, const char *listname, Int_t nfiles) : TEntryList(), + fListFileName(filename), fListName(listname), fNFiles(nfiles), fListOffset(0), fFile(0), fFileNames(0) { -// File naming convention: -// - by default, filename_elist.root is used, where filename is the -// name of the chain element -// - xxx$xxx.root - $ sign is replaced by the name of the chain element -// The TObjArray of chain elements is set by the TEntryListFromFile::SetFileNames() -// function. -// If the list name is not specified, the first object of class TEntryList -// in the file is taken. -// nfiles is the total number of files to process - - fListFileName = filename; - fListName = listname; - fNFiles = nfiles; + // File naming convention: + // - by default, filename_elist.root is used, where filename is the + // name of the chain element + // - xxx$xxx.root - $ sign is replaced by the name of the chain element + // The TObjArray of chain elements is set by the TEntryListFromFile::SetFileNames() + // function. + // If the list name is not specified, the first object of class TEntryList + // in the file is taken. + // nfiles is the total number of files to process + fListOffset = new Long64_t[fNFiles+1]; fListOffset[0]=0; for (Int_t i=1; i<fNFiles+1; i++){ fListOffset[i]=kBigNumber; } fN = kBigNumber; - fFile = 0; } //______________________________________________________________________________ TEntryListFromFile::~TEntryListFromFile() { -// d-tor - + // d-tor + delete [] fListOffset; fListOffset = 0; delete fFile; fFile = 0; - } //______________________________________________________________________________ @@ -91,12 +86,12 @@ Long64_t TEntryListFromFile::GetEntry(Int_t index) //See also Next() for a faster alternative if (index<0) return -1; - + if (index > fListOffset[fNFiles] && fListOffset[fNFiles]!=kBigNumber){ Error("GetEntry", "Index value is too large\n"); return -1; } - + if (index==fLastIndexQueried+1) return Next(); @@ -109,7 +104,7 @@ Long64_t TEntryListFromFile::GetEntry(Int_t index) Error("GetEntry", "All lists are empty\n"); return -1; } - + if (index < fListOffset[fTreeNumber]) { //this entry is in one of previously opened lists itree=0; @@ -154,7 +149,7 @@ Long64_t TEntryListFromFile::GetEntryAndTree(Int_t index, Int_t &treenum) { //return the entry corresponding to the index parameter and the //number of the tree, where this entry is - + Long64_t result = GetEntry(index); treenum = fTreeNumber; return result; @@ -165,7 +160,7 @@ Long64_t TEntryListFromFile::GetEntries() { //Returns the total number of entries in the list. //If some lists have not been loaded, loads them. - + if (fN==kBigNumber){ for (Int_t i=0; i<fNFiles; i++){ if (fListOffset[i+1]==kBigNumber){ @@ -183,7 +178,7 @@ Long64_t TEntryListFromFile::Next() { //Returns the next entry in the list. //Faster than GetEntry() - + Int_t itree =0; while (!fCurrent && itree<fNFiles){ LoadList(itree); @@ -193,7 +188,7 @@ Long64_t TEntryListFromFile::Next() Error("Next", "All lists are empty\n"); return -1; } - + Long64_t retentry = fCurrent->Next(); if (retentry<0){ if (fLastIndexQueried == fListOffset[fTreeNumber+1]-1){ @@ -218,7 +213,7 @@ Long64_t TEntryListFromFile::Next() } } - + fLastIndexQueried++; fLastIndexReturned = retentry; return retentry; @@ -230,7 +225,7 @@ Int_t TEntryListFromFile::LoadList(Int_t listnumber) { //Loads the list #listnumber //This is the only function that can modify fCurrent and fFile data members - + //first close the current list if (fCurrent){ if (fFile) { @@ -240,6 +235,8 @@ Int_t TEntryListFromFile::LoadList(Int_t listnumber) } } + R__ASSERT(fFileNames); + //find the right name //get the name of the corresponding chain element (with the treenumber=listnumber) TNamed *nametitle = (TNamed*)fFileNames->At(listnumber); @@ -258,17 +255,17 @@ Int_t TEntryListFromFile::LoadList(Int_t listnumber) //printf("filename: %s\n", filename.Data()); fFile = TFile::Open(filename.Data()); } - + if (!fFile || fFile->IsZombie()){ if (fFile) { delete fFile; fFile = 0; } fCurrent = 0; - fListOffset[listnumber+1]=fListOffset[listnumber]; + fListOffset[listnumber+1] = fListOffset[listnumber]; return -1; } - + if (!strcmp(fListName.Data(), "")){ TKey *key; TIter nextkey(fFile->GetListOfKeys()); @@ -281,7 +278,7 @@ Int_t TEntryListFromFile::LoadList(Int_t listnumber) } else { fCurrent = (TEntryList*)fFile->Get(fListName.Data()); } - + if (!fCurrent){ Error("LoadList", "List %s not found in the file\n", fListName.Data()); fCurrent = 0; @@ -305,39 +302,43 @@ void TEntryListFromFile::Print(const Option_t* option) const printf("total number of files: %d\n", fNFiles); TFile *f; TEntryList *el=0; - for (Int_t listnumber=0; listnumber<fNFiles; listnumber++){ - TNamed *nametitle = (TNamed*)fFileNames->At(listnumber); - TString filename_short = nametitle->GetTitle(); - if (filename_short.Contains(".root")){ - filename_short.Remove(filename_short.Length()-5, 5); - } - if (!strcmp(fListFileName.Data(), "")){ - //no name supplied, use the one of the chain file - filename_short.Append("_elist.root"); - //printf("filename: %s\n", filename_short.Data()); - f = TFile::Open(filename_short.Data()); - } else { - TString filename = fListFileName; - filename.ReplaceAll("$", filename_short); - //printf("filename: %s\n", filename.Data()); - f = TFile::Open(filename.Data()); - } - if (f && !f->IsZombie()){ - if (!strcmp(fListName.Data(), "")){ - TKey *key; - TIter nextkey(f->GetListOfKeys()); - while ((key=(TKey*)nextkey())){ - if (strcmp("TEntryList", key->GetClassName())==0){ - //found an object of class TEntryList - el = (TEntryList*)key->ReadObj(); + if (fFileNames==0) { + Error("Print","fFileNames was not set properly."); + } else { + for (Int_t listnumber=0; listnumber<fNFiles; listnumber++){ + TNamed *nametitle = (TNamed*)fFileNames->At(listnumber); + TString filename_short = nametitle->GetTitle(); + if (filename_short.Contains(".root")){ + filename_short.Remove(filename_short.Length()-5, 5); + } + if (!strcmp(fListFileName.Data(), "")){ + //no name supplied, use the one of the chain file + filename_short.Append("_elist.root"); + //printf("filename: %s\n", filename_short.Data()); + f = TFile::Open(filename_short.Data()); + } else { + TString filename = fListFileName; + filename.ReplaceAll("$", filename_short); + //printf("filename: %s\n", filename.Data()); + f = TFile::Open(filename.Data()); + } + if (f && !f->IsZombie()){ + if (!strcmp(fListName.Data(), "")){ + TKey *key; + TIter nextkey(f->GetListOfKeys()); + while ((key=(TKey*)nextkey())){ + if (strcmp("TEntryList", key->GetClassName())==0){ + //found an object of class TEntryList + el = (TEntryList*)key->ReadObj(); + } } + } else { + el = (TEntryList*)f->Get(fListName.Data()); } - } else { - el = (TEntryList*)f->Get(fListName.Data()); + if (el) + el->Print(option); } - if (el) - el->Print(option); } } - + } diff --git a/tree/treeplayer/src/TSelectorEntries.cxx b/tree/treeplayer/src/TSelectorEntries.cxx index 94b17e9a17b3894647891d7db146b990de89162c..b4248b0f1bed6502e7973992baabf1ce1f519a30 100644 --- a/tree/treeplayer/src/TSelectorEntries.cxx +++ b/tree/treeplayer/src/TSelectorEntries.cxx @@ -57,7 +57,7 @@ TSelectorEntries::TSelectorEntries(TTree *tree, const char *selection) : //______________________________________________________________________________ TSelectorEntries::TSelectorEntries(const char *selection) : - fSelect(0), fSelectedRows(0), fSelectMultiple(kFALSE) + fChain(0), fSelect(0), fSelectedRows(0), fSelectMultiple(kFALSE) { // Constructor.