hunting memory leaks
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 May 2008 21:21:39 +0000 (21:21 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 9 May 2008 21:21:39 +0000 (21:21 +0000)
HLT/BASE/HOMER/AliHLTHOMERReader.cxx
HLT/rec/AliHLTEsdManager.cxx

index 180832c44daed702bc023d335119b4127704a6e3..69edde341aabbb86e1dc44bb0dd23ad54f78a0c0 100644 (file)
@@ -357,6 +357,9 @@ AliHLTHOMERReader::~AliHLTHOMERReader()
 // see header file for class documentation
     ReleaseCurrentEvent();
     FreeDataSources();
+
+    if (fDataSources)
+      delete [] fDataSources;
     }
 
 int  AliHLTHOMERReader::ReadNextEvent()
@@ -750,7 +753,10 @@ void AliHLTHOMERReader::FreeDataSources()
            FreeTCPDataSource( fDataSources[n] );
        else if ( fDataSources[n].fType == kShm )
            FreeShmDataSource( fDataSources[n] );
+       if ( fDataSources[n].fHostname )
+         delete [] fDataSources[n].fHostname;
        }
+    fDataSourceCnt=0;
     }
 
 int AliHLTHOMERReader::FreeShmDataSource( DataSource& source )
@@ -760,8 +766,6 @@ int AliHLTHOMERReader::FreeShmDataSource( DataSource& source )
        shmdt( source.fShmPtr );
 //     if ( source.fShmID != -1 )
 //     shmctl( source.fShmID, IPC_RMID, NULL );
-    if ( source.fHostname )
-       delete [] source.fHostname;
     return 0;
     }
 
@@ -770,8 +774,6 @@ int AliHLTHOMERReader::FreeTCPDataSource( DataSource& source )
 // see header file for class documentation
     if ( source.fTCPConnection )
        close( source.fTCPConnection );
-    if ( source.fHostname )
-       delete [] source.fHostname;
     return 0;
     }
 
index b97e27ec88e610a11a2c6731561bf6df48834265..8ce85f9834b9c47def0f8be33e4ad57c9cd66947 100644 (file)
@@ -145,6 +145,7 @@ int AliHLTEsdManager::WriteESD(const AliHLTUInt8_t* pBuffer, AliHLTUInt32_t size
       }
       if (pTree) {
        // ESD has been created and must be cleaned up
+       pESD->Reset();
        delete pESD;
        pESD=NULL;
       }
@@ -229,6 +230,14 @@ AliHLTEsdManager::AliHLTEsdListEntry::AliHLTEsdListEntry(AliHLTComponentDataType
 AliHLTEsdManager::AliHLTEsdListEntry::~AliHLTEsdListEntry()
 {
   // see header file for class documentation
+  if (fpEsd) delete fpEsd;
+  fpEsd=NULL;
+
+  if (fpTree) delete fpTree;
+  fpTree=NULL;
+
+  if (fpFile) delete fpFile;
+  fpFile=NULL;
 }
 
 bool AliHLTEsdManager::AliHLTEsdListEntry::operator==(AliHLTComponentDataType dt) const