]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliFileMerger.cxx
Fix for savannah bug report 87728 (Laurent) + fix invalid read found with valgrind...
[u/mrichter/AliRoot.git] / ANALYSIS / AliFileMerger.cxx
index 8d05509a835ec0dcda497ceee4c50abdc96c4854..1373894aa75896f3f951239caa1e0b97c2ffaf1a 100644 (file)
@@ -118,16 +118,16 @@ void AliFileMerger::IterAlien(const char* outputDir, const char* outputFileName,
     TFile* currentFile=TFile::Open((objs->GetString()).Data());
     if(!currentFile) continue; // protection
     Merge(currentFile, mergeArray);
+
+    if(currentFile) delete currentFile;
   }
-  Bool_t separate = kFALSE;
-  if (separate) {
-    StoreSeparateResults(mergeArray,outputFileName);
-  }
-  else {
+
+  // StoreSeparateResults(mergeArray,outputFileName);
     StoreResults(mergeArray,outputFileName);
-  }
+
   delete mergeArray;
   delete res;
+
 }
 
 
@@ -160,7 +160,7 @@ void AliFileMerger::IterTXT( const char * fileList,  const char* outputFileName,
   else {
     StoreResults(mergeArray, outputFileName);
   }
-
+  
   delete mergeArray;
 }
 
@@ -199,6 +199,7 @@ void AliFileMerger::Merge(TFile* fileIn, TObjArray * array){
   //
   // Merging procedure
   //
+  if (!array) return;
   static Int_t counter=-1;
   counter++;
   TObjArray *carray = new TObjArray;   //array of the objects inside current file
@@ -225,8 +226,8 @@ void AliFileMerger::Merge(TFile* fileIn, TObjArray * array){
     return;
   }
   TMethodCall callEnv;
-  
-  for (Int_t i=0; i<carray->GetEntries(); i++){
+  Int_t entries =carray->GetEntriesFast();
+  for (Int_t i=0; i<entries; i++){
     
     TObjArray *templist = new TObjArray(1);
     templist->SetOwner(kFALSE);
@@ -255,6 +256,7 @@ void AliFileMerger::Merge(TFile* fileIn, TObjArray * array){
     AliSysInfo::AddStamp(currentObject->GetName(),2,i,counter);  
     delete templist;
   }
+  carray->Delete();
   delete carray;
 }