From 236d66c2798fc133306ad5c48b06caaade09b556 Mon Sep 17 00:00:00 2001
From: Holger Friedrich <friedrich@fias.uni-frankfurt.de>
Date: Tue, 29 Jul 2014 11:19:30 +0200
Subject: [PATCH] fixed memory leaks unveiled by static code analysis

---
 package_bgs/av/TBackgroundVuMeter.cpp |  2 +-
 package_bgs/jmo/BlobExtraction.cpp    | 13 +++++++++----
 package_bgs/tb/FuzzyUtils.cpp         |  3 ++-
 3 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/package_bgs/av/TBackgroundVuMeter.cpp b/package_bgs/av/TBackgroundVuMeter.cpp
index 5aab897..5c802ce 100644
--- a/package_bgs/av/TBackgroundVuMeter.cpp
+++ b/package_bgs/av/TBackgroundVuMeter.cpp
@@ -56,7 +56,7 @@ void TBackgroundVuMeter::Clear(void)
         cvReleaseImage(&m_pHist[i]);
     }
 
-    delete m_pHist;
+    delete[] m_pHist;
     m_pHist = NULL;
     m_nBinCount = 0;
   }
diff --git a/package_bgs/jmo/BlobExtraction.cpp b/package_bgs/jmo/BlobExtraction.cpp
index cd728fe..c3d2bea 100644
--- a/package_bgs/jmo/BlobExtraction.cpp
+++ b/package_bgs/jmo/BlobExtraction.cpp
@@ -1241,7 +1241,12 @@ namespace Blob
         }
       }	// end Main loop
 
-      if (ErrorFlag != 0) return false;
+      if (ErrorFlag != 0) {
+          delete[] Transition;
+          delete[] ThisRegion;
+          delete[] LastRegion;
+          return false;
+      }
       // ens situem al primer pixel de la seguent fila
       pImage = inputImage->imageData - 1 + startCol + (ThisRow + startRow) * inputImage->widthStep;
 
@@ -1362,9 +1367,9 @@ namespace Blob
 
     //free(RegionData);
     free(SubsumedRegion);
-    delete Transition;
-    delete ThisRegion;
-    delete LastRegion;
+    delete[] Transition;
+    delete[] ThisRegion;
+    delete[] LastRegion;
 
     if (imatgePerimetreExtern) cvReleaseImage(&imatgePerimetreExtern);
 
diff --git a/package_bgs/tb/FuzzyUtils.cpp b/package_bgs/tb/FuzzyUtils.cpp
index 84d5a50..fcb1972 100644
--- a/package_bgs/tb/FuzzyUtils.cpp
+++ b/package_bgs/tb/FuzzyUtils.cpp
@@ -338,7 +338,6 @@ void FuzzyUtils::getFuzzyIntegralChoquet(IplImage* H, IplImage* Delta, int n, fl
   float *Integral = (float*) malloc(3*(sizeof(float)));
   float* X = (float*) malloc(1*sizeof(float));
   float* XiXj = (float*) malloc(1*sizeof(float));
-  float* IntegralFlou1 = (float*) malloc(1*sizeof(float));
   float IntegralFlou;
 
   *Indice = 0;
@@ -508,4 +507,6 @@ void FuzzyUtils::AdaptativeSelectiveBackgroundModelUpdate(IplImage* CurrentImage
   free(BGImagePixel);
   free(OutputImagePixel);
   free(IntegralImagePixel);
+  free(Maximum);
+  free(Minimum);
 }
-- 
GitLab