diff --git a/Src/Kernels/Chebyshev/FChebM2LHandler.hpp b/Src/Kernels/Chebyshev/FChebM2LHandler.hpp
index 978b8e3640ef406790a16369308d818cd56c5eff..c4ab7c2c06997a079a897a579ac8687974c0c987 100644
--- a/Src/Kernels/Chebyshev/FChebM2LHandler.hpp
+++ b/Src/Kernels/Chebyshev/FChebM2LHandler.hpp
@@ -474,15 +474,17 @@ unsigned int Compress(const FReal epsilon, const unsigned int ninteractions,
 
   // init SVD
   const unsigned int LWORK = 2 * (3*nnodes + ninteractions*nnodes);
-  FReal *const WORK = new FReal [LWORK];
+  FReal *const WORK = new FReal [LWORK]{};
 
   // K_col ///////////////////////////////////////////////////////////
   FReal *const K_col = new FReal [ninteractions * nnodes*nnodes];
-  for (unsigned int i=0; i<ninteractions; ++i)
-    for (unsigned int j=0; j<nnodes; ++j)
+  for (unsigned int i=0; i<ninteractions; ++i){
+    for (unsigned int j=0; j<nnodes; ++j){
       FBlas::copy(nnodes,
                   C     + i*nnodes*nnodes + j*nnodes,
                   K_col + j*ninteractions*nnodes + i*nnodes);
+    }
+  }
   // singular value decomposition
   FReal *const Q = new FReal [nnodes*nnodes];
   FReal *const S = new FReal [nnodes];
@@ -499,8 +501,8 @@ unsigned int Compress(const FReal epsilon, const unsigned int ninteractions,
 
   // Q' -> B
   B = new FReal [nnodes*k_col];
-  for (unsigned int i=0; i<k_col; ++i)
-    FBlas::copy(nnodes, Q+i, nnodes, B+i*nnodes, 1);
+  for (unsigned int i=0; i<k_col; ++i){
+    FBlas::copy(nnodes, Q+i, nnodes, B+i*nnodes, 1);}
 
   // K_row //////////////////////////////////////////////////////////////
   FReal *const K_row = C;
@@ -511,6 +513,10 @@ unsigned int Compress(const FReal epsilon, const unsigned int ninteractions,
   if (info_row!=0){
       std::stringstream stream;
       stream << info_row;
+      delete [] WORK ; 
+      delete [] B ;
+      delete [] Q ;
+      delete [] S ;
       throw std::runtime_error("SVD did not converge with " + stream.str());
     }
   const unsigned int k_row = FSvd::getRank<FReal, ORDER>(S, epsilon);
@@ -540,7 +546,6 @@ unsigned int Compress(const FReal epsilon, const unsigned int ninteractions,
                               B + j*nnodes);
           }
     }
-
   delete [] V;
   delete [] S;
   delete [] K_row;