refined memory mgmt in CheckBuffer()
authorfronchet <fronchet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 11 Jun 2011 13:10:08 +0000 (13:10 +0000)
committerfronchet <fronchet@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 11 Jun 2011 13:10:08 +0000 (13:10 +0000)
HLT/CALO/AliHLTCaloClusterizer.cxx

index e67722d..b5f5d47 100644 (file)
@@ -78,8 +78,7 @@ AliHLTCaloClusterizer::AliHLTCaloClusterizer(TString det):
 \r
     fAvailableSize = sizeof(AliHLTCaloRecPointDataStruct) * 20;\r
     fBuffer = new UChar_t[fAvailableSize]; //FR\r
-\r
-    //    fFirstRecPointPtr = reinterpret_cast<AliHLTCaloRecPointDataStruct*>(new UChar_t[fAvailableSize]);\r
+    \r
     fFirstRecPointPtr = reinterpret_cast<AliHLTCaloRecPointDataStruct*>(fBuffer);\r
     fRecPointDataPtr = fFirstRecPointPtr;\r
 \r
@@ -88,8 +87,10 @@ AliHLTCaloClusterizer::AliHLTCaloClusterizer(TString det):
 AliHLTCaloClusterizer::~AliHLTCaloClusterizer()\r
 {\r
     //See header file for documentation\r
-  delete [] fBuffer;\r
-  //delete [] fRecPointDataPtr;\r
+  delete [] fBuffer; //FR\r
+  fBuffer = NULL;    //FR\r
+  fAvailableSize = 0;  //FR\r
+\r
   delete [] fRecPointArray;\r
 }\r
 \r
@@ -280,14 +281,22 @@ Int_t AliHLTCaloClusterizer::CheckBuffer()
         Int_t recPointOffset = reinterpret_cast<UChar_t*>(fRecPointDataPtr) - reinterpret_cast<UChar_t*>(fFirstRecPointPtr);\r
         Int_t digitIndexOffset = reinterpret_cast<UChar_t*>(fDigitIndexPtr) - reinterpret_cast<UChar_t*>(fRecPointDataPtr);\r
         UChar_t *tmp = new UChar_t[fAvailableSize*2];\r
-\r
+       \r
+       if (tmp == NULL)\r
+         {\r
+           HLTError("Pointer error");\r
+           return(-1);\r
+         }\r
+       \r
         memcpy(tmp, fFirstRecPointPtr, fUsedSize);\r
         fAvailableSize *= 2;\r
         for (Int_t n = 0; n < fNRecPoints; n++)\r
         {\r
             fRecPointArray[n] = reinterpret_cast<AliHLTCaloRecPointDataStruct*>(reinterpret_cast<UChar_t*>(fRecPointArray[n]) - reinterpret_cast<UChar_t*>(fFirstRecPointPtr) + reinterpret_cast<UChar_t*>(tmp));\r
         }\r
-        delete [] fFirstRecPointPtr;\r
+       delete [] fBuffer; //FR\r
+        fBuffer = tmp; //FR\r
+       \r
         fFirstRecPointPtr = reinterpret_cast<AliHLTCaloRecPointDataStruct*>(tmp);\r
         fRecPointDataPtr = reinterpret_cast<AliHLTCaloRecPointDataStruct*>(tmp + recPointOffset);\r
         fDigitIndexPtr = reinterpret_cast<Int_t*>(reinterpret_cast<UChar_t*>(fRecPointDataPtr) + digitIndexOffset);\r